我有一个带有多个模块的Java Maven项目。从各个模块引用父模块时,以下信息将添加到项目A\module-sample-app\pom.xml
:
<groupId>org.apache.maven</groupId>
<artifactId>module-sample-app</artifactId>
<packaging>jar</packaging>
<name>module-sample-app</name>
<parent>
<groupId>org.apache.maven</groupId>
<artifactId>sample-app-parent</artifactId>
<version>1.0-${buildLifeId}</version>
</parent>
父应用程序A
在A\pom.xml
中具有以下条目:
<artifactId>A</artifactId>
<packaging>jar</packaging>
<name>A</name>
<version>1.0-${buildLifeId}</version>
要运行构建,请在项目A
的父目录上执行以下操作:
示例:mvn clean install -DbuildLifeId=1001
生成的JAR文件具有嵌入的pom.xml
,其字符串为${buildLifeId}
,而不是值1001
。
当尝试在另一个应用程序sample-app
中的模块B
上使用时,由于运行时变量未替换为实际值,因此无法获取依赖项。为了突出显示,B
不是A
的模块。
在B\pom.xml
中:
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>module-sample-app</artifactId>
<version>1.0-1001</version>
</dependency>
有了这种依赖关系,由于嵌入在pom.xml
中的module-sample-app-1.0-1001.jar
的父版本被定义为<version>1.0-${buildLifeId}</version>
,因此依赖关系无法加载。
所以我的问题是-Maven是否支持可在将pom.xml
打包到JAR中之前替换运行时变量的插件?还是有解决方法。构建JAR时,可以使用Ant插件将版本节点中的buildLiefeId
变量替换为实际值吗?
答案 0 :(得分:0)
我已经在使用${revision}
-我只需要在父pom和子pom中都使用Maven Flatten插件即可解决此问题。