我正在将一个应用程序从它与一堆其他东西共享的 svn 存储库中移出到它自己的全新存储库中。所以,我有机会重新开始布局。
该应用程序本身有两个组件 - 一个相当标准的 Java webapp,它与数据库通信,以及一个后端组件,也是 Java,它轮询数据库,并根据它发现的内容启动长时间运行的处理任务 - 本质上是数据库被用作队列。代码分为三个包:
org.blah.common
- 在 Web 应用程序和后端之间共享的代码,例如 DAOorg.blah.webapp
- 网络应用程序;这取决于org.blah.common
,并构建到.war
文件中。org.blah.backend
- 后端流程;这取决于org.blah.common
,并构建为包含 jar 和一些脚本的 tar 文件。
我还想将其他一些 tomcat 和 apache 配置也放入 svn。
现在,所有三个包都在一个src
目录下的 svn 中,并且有一个具有不同目标的 ant 脚本来构建不同的部分。这一切都有点杂乱无章——svn:ignore 属性变得相当大,而且一个目录中的脚本与src
.
我被maven 标准目录布局所吸引,但我以前没有使用过它。我想出了这个:
common/
src/
main/
java/
resources/
test/
java/
resources/
target/ # Not checked in
common.jar
webapp/
src/
main/
java/
resources/
webapp/
test/
java/
resources/
target/ # Not checked in
webapp.war
backend/
src/
main/
java/
perl/
resources/
test/
java/
resources/
target/ # Not checked in
backend.tar
infra/
tomcat/
bin/
conf/
apache/
bin/
conf/
db/
tables/
procs/
triggers/
请注意,现在,我不打算迁移到 maven - 我将调整现有的 ant 脚本,因为它们可以工作。不过,我想保留在未来某个时候迁移到 maven(或类似 buildr,使用 maven 布局的东西)的选项。
所以:
- 这似乎是布置存储库的合理方式吗?有什么东西会让我走得更远吗?
- 这对于刚接触该应用程序的人来说会很明显吗?
- 这是否与 Maven 兼容,我应该决定使用它吗?(我知道理论上,你可以让 maven 使用任何布局,但我相信他们推荐一个标准是有原因的。)
- IDE 会对此有任何问题吗?(根据我使用的计算机,我使用 intellij 或 eclipse。我团队中的其他人——他们对此没有意见——使用 netbeans。)