关于java:推荐的源代码管理目录结构?

关于java:推荐的源代码管理目录结构?

Recommended Source Control Directory Structure?

我将在新的J2EE Web应用程序上使用Subversion进行源代码控制。您将建议使用哪种目录结构来组织代码,测试和文档?


我通常有

1
2
3
4
5
6
Project Directory
  src - actual source
  doc - documentation
  lib - libraries referenced from source
  dep - installation files for dependencies that don't fit in lib
  db  - database installation script

在使用Visual Studio时,我不确定这在Java世界中是否可以正常使用。但是我通常把东西放在src的不同项目文件夹中。对于每个源项目,都有一个单独的测试项目。构建文件位于主项目目录中。我通常还会在其中放置一个自述文件,以记录如果不仅仅需要签出项目,还需要如何设置项目。

编辑:这是项目的单个工作结帐的结构。对于版本控制系统中的每个分支/标签,它都将重复(请记住,在大多数SVN系统中,副本很便宜)。上面Subversion下的示例如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/project
    /trunk
        /src
        /doc
        /...
    /branches
        /feature1
            /src
            /doc
            /...
        /feature2
            /src
            /doc
            /...

我在SO上发现了一些老问题,这些问题可能会让您感兴趣:

  • 什么是php应用程序的良好标准代码布局

    • 包含指向有关Web应用程序的可伸缩和灵活目录结构的文章的链接(尽管着重于PHP)
  • 换句话说,如何构造Java应用程序:我应该将类放在哪里?
  • 版本控制中的项目结构

为扩展Mendelt Siebenga的建议,我还将添加一个web目录(用于JSP文件,WEB-INF,web.xml等)。

测试应该放在一个名为test的文件夹中,该文件夹是主src文件夹的同级文件-这样,您的单元测试类可以与被测试的源代码具有相同的包名称(以减轻您遇到的情况)例如,要测试受保护的方法或类...请参阅JUnit FAQ,有关此问题的信息也应放在测试文件应该放在哪里?)。

我本人并没有太多用处,但是Maven项目还将在src文件夹旁边创建一个resources文件夹,用于要打包/部署的非源代码以及主要源代码-诸如属性文件,资源束之类的东西。您的里程可能与此不同。


我使用Eclipse创建J2EE Web应用程序,这将创建以下项目结构:

1
2
3
4
5
WebAppName\\
    \\lib
    \\src
    \\tests
    etc...

然后我将在我们的主干上创建一个名为WebAppNameProject的SVN文件夹。在此文件夹中,我将创建名为WebAppNameSource,Documentation等的文件夹。在WebAppNameSource文件夹中,我将放置由Eclipse生成的项目源。因此,我在SVN中将具有以下文件夹结构:

1
2
3
4
5
6
7
\\svn\\trunk\\WebAppNameProject
    \\WebAppNameSource
        \\lib
        \\src
        \\tests
        etc...
    \\Documentation

希望这会有所帮助。


推荐阅读