具有父pom和svn布局的多模块maven项目

Cas*_*sey 12 release-management maven

我目前有大约16个项目,我使用maven构建,部署到同一个应用程序服务器,构成类似"门户"的东西.我已经构建了一个父pom来处理常见的依赖项和插件配置.目前,我的SVN结构看起来与此类似:

portal_root
    +project1
        +tags
        +branches
        +trunk
    +project2
        .
        .
        .
    +projectn
    pom.xml
Run Code Online (Sandbox Code Playgroud)

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

这给SVN带来了一个问题,好像另一个开发人员想要查看整个"门户"根(也获得父pom),他们默认也会删除所有标签和分支的副本!不太理想.

我唯一能想到的就是使用这样的东西:

 portal_root
     +tags
     +branches
     +trunk
         +project1
              +src
              pom.xml
         +project2
             .
             .
             .
         pom.xml
Run Code Online (Sandbox Code Playgroud)

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

我现在也正在努力将Teamcity连接到这个,这将更容易一些,因为我只需要观察一个目录(例如标签)来捕获需要构建的所有内容.我还将工件部署到企业Nessus存储库.

我希望有人可以在这里给我一些建议,因为我无法找到任何体面的文档来讨论整个构建生命周期和最佳实践.

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

Ali*_*iba 25

您可以使用以下布局:

+parent-project
  pom.xml
+child-project-1
  pom.xml
+child-project-2
  pom.xml
Run Code Online (Sandbox Code Playgroud)

在父项目pom中添加:

<modules>
    <module>../child-project-1</module>
    <module>../child-project-2</module>
</modules>
Run Code Online (Sandbox Code Playgroud)

在儿童项目pom添加:

<parent>
    <artifactId><!-- parent artifactId --></artifactId>
    <groupId><!-- parent groupdId --></groupId>
    <version><!-- parent version --></version>
    <relativePath>../parent-project</relativePath>
</parent>
Run Code Online (Sandbox Code Playgroud)

儿童项目可以选择依赖.

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