将pom.xml打包到JAR

时间:2018-08-08 14:29:49

标签: java maven maven-plugin maven-jar-plugin

我有一个带有多个模块的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>

父应用程序AA\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变量替换为实际值吗?

1 个答案:

答案 0 :(得分:0)

我已经在使用${revision}-我只需要在父pom和子pom中都使用Maven Flatten插件即可解决此问题。