推荐的源控制目录结构?

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

我通常有

项目目录
   src  - 实际来源
   doc  - 文档
   lib  - 从源引用的库
   dep  - 不适合lib的依赖项的安装文件
   db  - 数据库安装脚本

在使用Visual Studio时,我不确定它在java世界中的工作原理是否相同。 但我通常把东西放在src中的不同项目文件夹中。 对于每个源项目,都有一个单独的测试项目。 构建文件放在主项目目录中。 我通常在那里放一个自述文件,记录如何设置项目,如果它需要的不仅仅是检查。

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

/project /trunk /src /doc /... /branches /feature1 /src /doc /... /feature2 /src /doc /... 

我在这里发现了一些可能对你有趣的旧问题:

  • 什么是PHP应用程序的良好标准代码布局
    • 包含指向Web应用程序的可伸缩和灵活目录结构的文章的链接(尽管专注于PHP)
  • 如何构建一个java应用程序,换句话说:我在哪里放置我的类?
  • 版本控制中的项目结构

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

测试应该放在名为test的文件夹中,该文件夹是主src文件夹的兄弟 – 这样,您的unit testing类可以与正在测试的源代码具有相同的包名(以便于您想要测试受保护的方法或类的情况,例如…请参阅JUnit常见问题解答 ,这个问题也在我应该把测试文件放在哪里? )。

我自己没有太多用处,但是Maven项目还会在src文件夹旁边创建一个resources文件夹,用于非源代码,你想要打包/部署主源代码 – 例如属性文件,资源包等。您的里程可能因此而异。

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

 WebAppName\ \lib \src \tests etc... 

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

 \svn\trunk\WebAppNameProject \WebAppNameSource \lib \src \tests etc... \Documentation 

希望这可以帮助。