如何使用适当的版本和版本结构设置多模块maven项目

时间:2011-01-03 12:11:45

标签: maven-2 maven-release-plugin multi-module

在版本控制,发布和osgi包方面,我找不到我的多模块maven项目的最佳实践,

首先版本控制和重新安装。我的项目有5-6个子模块,200 + jar,所以想要使用聚合,

案例1:不指定项目版本并使用父版本

  • 在这种情况下,如果我使用maven发布 插件标记和pom.next都是 开发可以(ok表示jar3 将始终使用最新版本 jar1与自己相同但是 如果我需要修补补丁怎么办? 只为jar1?我怎么能设法 制造相关(它说无法释放 项目因未公布 依赖父级:0.0.2-SNAPSHOT) 如果我设法释放jar1 0.0.1.1,怎么说jar3使用pat1版本的jar1?

    父项目(0.0.1-快照)
     模块1   Jar1
      Jar2
     单词数
     Jar3
      (依赖关系)[Jar1(project.version),Jar2(project.version)]
      Jar4
      (依赖关系)[Jar1(project.version),Jar3(project.version)]

案例2:也许在父pom

的属性文件中指定jar版本是个好主意
  • 在这种情况下使用发布插件时 不幸的是,当我检查pom.next我 看到这两个jar版和 依赖版本被还原为 硬编码而不是财产 (jar1.version)以便下一步 发布我将无法使用 属性,第二个问题是 即使我设法解决第一个问题 maven发布插件不会改变 属性所以下一个版本将使用 来自属性的未修改版本

    父母项目
     属性
      jar1.version
      jar2.version
      jar3.version
      jar4.version
     模块1   Jar1(jar1.version)
      Jar2(jar2.version)
     模块2(0.0.1快照)
      Jar3(jar3.version)
       (依赖关系)[Jar1,Jar2]
      Jar4(0.0.1快照)
       (依赖关系)[Jar1,Jar3]

我有点困惑,并不认为复制和补丁程序会那么困难,用maven管理这种要求的最佳方法是什么

1 个答案:

答案 0 :(得分:0)

最后我设法通过// dependencyManagement \

支持我的多模块项目的发布(版本)管理

我的父母pom

    <project>
 <modelVersion>4.0.0</modelVersion>
 <groupId>com.seyn</groupId>
 <artifactId>hophop</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <packaging>pom</packaging>
 <name>hophop</name>

 <scm>
  <connection></connection>
  <developerConnection></developerConnection>
  <url></url>
 </scm>

 <properties>
  <hophop1.version>0.0.1-SNAPSHOT</hophop1.version>
  <hophop2.version>0.0.1-SNAPSHOT</hophop2.version>
 </properties>

 <modules>
  <module>../hophop1</module>
  <module>../hophop2</module>
 </modules>

 <build>
  <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.1</version>
   </plugin>
  </plugins>
 </build>

 <dependencyManagement>
  <dependencies>
   <dependency>
    <groupId>com.seyn</groupId>
    <artifactId>hophop1</artifactId>
    <version>${hophop1.version}</version>
   </dependency>
  </dependencies>
 </dependencyManagement>
</project>

和我的模块1 pom:

 <project>
 <modelVersion>4.0.0</modelVersion>
 <parent>
  <artifactId>hophop</artifactId>
  <groupId>com.seyn</groupId>
  <version>0.0.1-SNAPSHOT</version>
  <relativePath>..\hophop</relativePath>
 </parent>
 <groupId>com.seyn</groupId>
 <artifactId>hophop1</artifactId>
 <version>0.0.1-SNAPSHOT</version>

 <scm>
  <connection>seyn</connection>
  <developerConnection>seyn</developerConnection>
  <url>seyn</url>
 </scm>

</project>

和我的模块2 pom依赖于模块1:

    <project>
 <modelVersion>4.0.0</modelVersion>
 <parent>
  <artifactId>hophop</artifactId>
  <groupId>com.seyn</groupId>
  <version>0.0.1-SNAPSHOT</version>
  <relativePath>..\hophop</relativePath>
 </parent>
 <groupId>com.seyn</groupId>
 <artifactId>hophop2</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <scm>
  <connection>seyn</connection>
  <developerConnection>seyn</developerConnection>
  <url>seyn</url>
 </scm>
 <dependencies>
  <dependency>
   <groupId>com.seyn</groupId>
   <artifactId>hophop1</artifactId>
  </dependency>
 </dependencies>
</project>