在 META-INF 目录下添加有效的 pom.xml

Rom*_*las 4 maven-2

当我使用 Maven 2(版本2.0.92.2.1)构建 JAR 库pom.xml时,库的 被复制META-INF/maven/[groupId]/[artifactId]/到 JAR 目录中。

但是,在我的情况下,它pom.xml有一个父级,我更愿意获得有效的 pom而不是原始pom.xml文件(或者最终同时拥有它们)。

有没有办法做到这一点?

dir*_*ira 5

您可以在安装周期生成 Effective-pom.xml

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-help-plugin</artifactId>
     <version>2.1.1</version>
     <executions>
        <execution>
           <phase>generate-resources</phase>
       <goals>
          <goal>effective-pom</goal>
       </goals>
       <configuration>
          <output>${project.build.outputDirectory}/META-INF/maven/${project.groupId}/${project.artifactId}/effective-pom.xml</output>
       </configuration>
      </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud) 但是要将这个 Effective-pom.xml 复制到 JAR 文件的 `META-INF/maven/[groupId]/[artifactId]/` 目录下,您必须编写一个自定义 Jar mojo(只需通过扩展 `org.apache .maven.plugin.jar.JarMojo`) 因为将 `pom.xml` 复制到 META-INF 的代码是硬编码在 [org.apache.maven.archiver.MavenArchiver][1](第 487 行)(和我认为没有明显的方法可以从 pom.xml 设置/覆盖此行为)。

更新:感谢@RomainLinsolas,可以直接将 pom 放在那里。更新了解决方案

  • 谢谢。请注意,如果您使用 `&lt;output&gt;${project.build.outputDirectory}/META-INF/maven/${project.groupId}/${project.artifactId}/effective-pom.xml&lt;/output&gt; 配置此插件`,那么`effective-pom.xml` 就会被放到JAR 中的正确位置! (2认同)