【问题标题】:multi module maven project with parent pom and svn layout具有父 pom 和 svn 布局的多模块 maven 项目
【发布时间】:2011-05-25 09:50:01
【问题描述】:

我目前有大约 16 个使用 maven 构建的项目,这些项目部署到构成“门户”之类的同一应用程序服务器上。我已经构建了一个父 pom 来处理常见的依赖项和插件配置。目前,我的 SVN 结构类似于:

portal_root
    +project1
        +tags
        +branches
        +trunk
    +project2
        .
        .
        .
    +projectn
    pom.xml

各个项目都是单独部署的。也就是说,project1 对 project2 没有依赖关系,每个都可以修改和部署,而无需修改其他任何内容。

这给 SVN 带来了一个问题,就好像另一个开发人员想要检查整个“门户”根目录(也可以获得父 pom),他们也会默认下拉所有标签和分支的副本!不是很理想。

我能想到的唯一另一件事是使用这样的东西:

 portal_root
     +tags
     +branches
     +trunk
         +project1
              +src
              pom.xml
         +project2
             .
             .
             .
         pom.xml

但是,现在所有项目更改都将在标签文件夹中进行跟踪。这对我来说不是一个大问题,但现在分支似乎变得很痛苦。

我目前也在努力将 Teamcity 连接到其中,这现在会更容易一些,因为我只需要查看一个目录(例如标签)即可捕获需要构建的所有内容。我还将工件部署到企业 Nessus 存储库。

我希望有人可以在这里给我一些建议,因为我在这里找不到任何关于整个构建生命周期和最佳实践的像样的文档。

我喜欢能够使用单个 maven 命令构建和部署所有项目的想法。我还喜欢将所有常见的依赖项、存储库信息和插件信息放在一个地方。

【问题讨论】:

    标签: maven release-management


    【解决方案1】:

    您可以使用以下布局:

    +parent-project
      pom.xml
    +child-project-1
      pom.xml
    +child-project-2
      pom.xml
    

    在父项目中添加:

    <modules>
        <module>../child-project-1</module>
        <module>../child-project-2</module>
    </modules>
    

    在儿童项目中添加:

    <parent>
        <artifactId><!-- parent artifactId --></artifactId>
        <groupId><!-- parent groupdId --></groupId>
        <version><!-- parent version --></version>
        <relativePath>../parent-project</relativePath>
    </parent>
    

    子项目可以选择依赖。

    以下链接也可能有所帮助:

    【讨论】:

    • 如果要在子项目中使用父项目,请确保添加父数据作为依赖项。
    【解决方案2】:

    JohnS 方法的一种变体是使用svn:externals 将子项目的适当主干/标签/分支挂钩到父项目的相应主干/标签/分支。通过这种方式,检查您的父项目的一个变体将提取其他项目的所有正确版本。

    只有在合理地同时检出所有项目时才有意义。

    【讨论】:

    • 评论我的方法会更有帮助,而不是默默地投反对票。考虑到这种方法在过去四年中一直在帮助我们处理多个客户特定版本,同时最大限度地减少代码差异,我很想知道我一直以来做错了什么。
    • 我认为 svn:externals 真的很聪明,尤其是在大型企业 svn repos 中。这样,您可以在需要时将 maven 目录布局捆绑在一起,而无需更改整个 repo 结构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 2010-12-31
    • 2011-04-20
    • 2011-07-19
    • 2014-03-28
    • 2019-01-10
    相关资源
    最近更新 更多