我有一个包含多个模块的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
。
当尝试在另一个应用程序B
中的模块sample-app
上使用时,由于运行时变量未替换为实际值,因此无法获取依赖项。我要强调的是,B
不是A
的一个模块。
在B\pom.xml
中
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>module-sample-app</artifactId>
<version>1.0-1001</version>
</dependency>
使用此依赖项时,由于嵌入在module-sample-app-1.0-1001.jar
中的pom.xml
会将父版本定义为<version>1.0-${buildLifeId}</version>
,因此无法加载依赖项。
所以我的问题是--在将pom.xml
打包到JAR之前,Maven是否支持一个可以替换运行时变量的插件?或者是否有解决方法。在构建JAR时,我可以使用Ant插件将version节点中的buildLiefeId
变量替换为实际值吗?
发布于 2019-05-16 07:09:18
我已经在使用${revision}
了--我只需要在父pom和子pom中使用Maven插件来解决这个问题。
https://stackoverflow.com/questions/51749242
复制相似问题