1

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

该应用程序本身有两个组件 - 一个相当标准的 Java webapp,它与数据库通信,以及一个后端组件,也是 Java,它轮询数据库,并根据它发现的内容启动长时间运行的处理任务 - 本质上是数据库被用作队列。代码分为三个包:

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

3 回答 3

1
  • 这似乎是布置存储库的合理方式吗?有什么东西会让我走得更远吗?

好吧,Maven 捕获了行业最佳实践,包括布局,所以即使您现在不使用 Maven,这似乎也是一个非常好的选择。实际上,这是从其他技术迁移到 Maven 时推荐的迁移策略:首先迁移到 Maven 布局并更新现有的构建脚本,然后引入 Maven。在您的情况下,如果所有项目都具有相同的生命周期(如果它们都一起发布),我没有任何特别的评论,除了可能无法使用 Maven 以这种方式管理的基础设施项目,但现在没有任何阻塞。

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

我觉得很清楚,老实说,如果有些人对此有问题并且无法适应,也许是他们需要修复:)

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

它似乎与 Maven 几乎完全兼容(除了我所说的 infra 部分,但这真的不是问题)。是的,如果您不必修改 Maven 的配置并使用默认约定,这显然会更简单。请注意,您可以设置与 Ant 构建并行的 Maven 构建以无缝移动。

  • IDE 会对此有任何问题吗?(根据我使用的计算机,我使用 intellij 或 eclipse。我团队中的其他人——他们对此没有意见——使用 netbeans。)

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

于 2009-12-22T18:10:45.770 回答
0

我唯一会遇到的问题是我希望src目录直接在里面包含源代码,而不是上面的布局。但是我认为这是一种我可以很快克服的思维方式,尤其是在 Eclipse 中。

于 2009-12-22T14:01:12.423 回答
0

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

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

于 2009-12-22T14:08:06.280 回答