相互依赖项目的依赖管理

时间:2017-09-15 09:04:48

标签: maven

我们希望集中管理依赖版本,因此我们提出了一个名为commons的中央maven项目来管理项目m1和m2的版本:

 commons
    |___pom.xml: 
                 <groupId>commons</groupId>
                 <artifactId> commons </artifactId>
                 <version>1.0.1-SNAPSHOT</version>
                 <properties>
                     <m1.version>1.0.0</m1.version>
                     <m2.version>1.0.0</m2.version>
                 </properties>
                 <dependencyManagement>
                     <depencencies>
                         <dependency>
                             <groupId>g1</groupId>
                             <artifactId>m1</artifactId>
                             <version>${m1.version}</version>
                         </dependency>
                         <dependency>
                             <groupId>g2</groupId>
                             <artifactId>m2</artifactId>
                             <version>${m2.version}</version>
                         </dependency>
                     </dependencies>
                 </dependencyManagement>

m1和m2的父级是公共的,m1依赖于m2:

    m1
    |___pom.xml: 
                 <groupId>g1</groupId>
                 <artifactId>m1</artifactId>
                 <version>1.0.1-SNAPSHOT</version>

                 <parent>
                     <groupId>commons</groupId>
                     <artifactId>commons</artifactId>
                     <version>1.0.0</version>
                 </parent>

                 <depencencies>
                         <dependency>
                             <groupId>g2</groupId>
                             <artifactId>m2</artifactId>
                         </dependency>
                 </dependencies>

通过这样做,我不必指定m2的版本。 问题是,如果我现在想要更改m2,m1将通过执行以下操作来获取m1的更改:

  1. 将m2的新版本从1.0.1-SNAPSHOT发布到1.0.1
  2. 从1.0.0更新到1.0.1
  3. 从1.0.1-SNAPSHOT发布新版本的公共资源到1.0.1
  4. 在m1中更新父引用:

             <parent>
                 <groupId>commons</groupId>
                 <artifactId>commons</artifactId>
                 <version>1.0.1</version>
             </parent>
    
  5. 将m2的新版本从1.0.1-SNAPSHOT发布到1.0.1
  6. 从1.0.0更新到1.0.1
  7. 从1.0.1发布新版本的公共资源到1.0.2
  8. 我们关注的是公共版本1.0.1不是一个一致版本,因为m2和m1所依赖的m2不一样。

    我是否清楚地解释了我的问题?你能提一些建议吗?

    谢谢你, 衙署

0 个答案:

没有答案