我正在将一个应用程序从一个svn库中移出,并与其他一些其他的东西共享到它自己的全新的应用程序中。所以,我有机会重新开始布局。我应该如何布置我的存储库?
该应用程序本身有两个组件 - 一个合理标准的Java Web应用程序,与数据库进行通信,还有一个后端组件(也称为Java),用于轮询数据库,并根据所发现的内容启动长时间运行的处理任务 - 本质上,数据库被用作队列。该代码被分成三个包:
org.blah.common
- 代码,诸如DAO的,即网络应用程序和后端org.blah.webapp
之间共享 - 的网络应用程序;这取决于org.blah.common
,并构建到.war
文件。org.blah.backend
- 后端进程;这取决于org.blah.common
,并构建到包含jar和一些脚本的tar文件。
我还想把其他一些tomcat和apache配置也放到svn中。
现在,所有的三个软件包都在svn下src
目录下,并且有一个蚂蚁脚本,其中包含构建不同部分的不同目标。这一切都有点不尽如人意--svn:ignore属性变得相当大,并且一个目录中的脚本与src
下的某些程序包中的代码相关,而另一个中的脚本则用于启动和停止tomcat,这一点并不明显。
我很喜欢maven standard directory layout,但我以前没有用过它。我想出了这一点:
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的选项(或者使用maven布局的类似buildr的东西)。
所以:
- 这是否看起来像铺设仓库的合理方式是什么?有没有什么会让我进一步绊倒我?
- 这对刚接触应用程序的人来说会很明显吗?
- 这是否与maven兼容,我应该决定使用它吗? (我知道从理论上讲,你可以让Maven在任何布局下工作,但我相信他们推荐标准是有原因的。)
- IDE是否会遇到任何问题? (根据我在哪台电脑上,我使用intellij或eclipse。我团队中的其他人 - 对此没有意见 - 使用netbeans。)
听起来不错,谢谢。已经使用IntelliJ和Eclipse进行过测试,它们看起来或多或少都很开心。 – Andy 2009-12-23 19:08:31
实际上,当提供pom.xml时,Eclipse,IntelliJ和NetBeans都能够处理此布局,而无需任何手动调整。我只是不知道在仅使用Ant时是否也是如此。 – 2009-12-23 19:21:44