我有一个包含多个模块的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
复制相似问题