2009-12-22 45 views
1

我正在将一个应用程序从一个svn库中移出,并与其他一些其他的东西共享到它自己的全新的应用程序中。所以,我有机会重新开始布局。我应该如何布置我的存储库?

该应用程序本身有两个组件 - 一个合理标准的Java Web应用程序,与数据库进行通信,还有一个后端组件(也称为Java),用于轮询数据库,并根据所发现的内容启动长时间运行的处理任务 - 本质上,数据库被用作队列。该代码被分成三个包:

  1. org.blah.common - 代码,诸如DAO的,即网络应用程序和后端
  2. org.blah.webapp之间共享 - 的网络应用程序;这取决于org.blah.common,并构建到.war文件。
  3. 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。)

回答

1
  • 这是否看起来像一个合理的布局方式?有没有什么会让我进一步绊倒我?

那么,Maven的捕捉行业最佳实践,包括布局,所以这看起来即使你不使用Maven,现在一个非常不错的选择。实际上,从其他技术转向Maven时,这是推荐的迁移策略:首先,转到Maven布局并更新现有的构建脚本,然后介绍Maven。就你而言,如果所有项目的生命周期都相同(如果它们全部一起发布),那么除了可能不用Maven管理的Infra项目外,我没有特别的意见,但现在没有任何阻止。

  • 这对刚接触应用程序的人来说会很明显吗?

我觉得它非常清晰,坦率地说,如果有些人有一个问题,它如果他们无法适应,也许这是他们需要被固定:)

  • 这是否与maven兼容,我应该决定使用它吗? (我知道,从理论上说,你可以让行家工作,任何布局,但我相信他们推荐了一个标准的一个原因。)

看来几乎完全兼容的Maven(除了红外部分,因为我说但这实际上不是问题)。是的,如果您不需要修改Maven的配置并使用默认约定,则显然会更简单。请注意,您可以与Ant构建并行设置Maven构建以无缝移动。

  • IDE是否会遇到任何问题? (根据我在哪台计算机,我使用的IntelliJ或月食其他人在我的球队 - 谁帮忙,没有对这个观点 - 使用NetBeans的)

这是一个很长的时间,因为我没有将Ant项目导入到其中一个IDE中,但我认为他们应该都能够处理这种布局(使用Maven时100%确定)。回答这个问题的最好方法是做一些测试当然:)

+0

听起来不错,谢谢。已经使用IntelliJ和Eclipse进行过测试,它们看起来或多或少都很开心。 – Andy 2009-12-23 19:08:31

+0

实际上,当提供pom.xml时,Eclipse,IntelliJ和NetBeans都能够处理此布局,而无需任何手动调整。我只是不知道在仅使用Ant时是否也是如此。 – 2009-12-23 19:21:44

0

我唯一会遇到的问题是我期望src目录直接有源代码,而不是上面的布局。不过,我认为这是一种思考方式,我可以很快克服,特别是在Eclipse中。

0

为什么存储库中的目标目录?我很喜欢不检查构建结果,因为它们可以很容易地复制。如果他们不容易被复制,那么这就是应该解决的问题,而不是检查二进制文件。

除此之外,我没有看到这个布局的任何问题。除了tomcat目录,它是标准的maven布局。

+0

啊,对不起 - 他们没有签入。这只是他们最终的目的。我会编辑这个问题来说明问题。 – Andy 2009-12-22 14:23:12