2010-11-23 5 views
3

Wenn ich eine JAR-Bibliothek mit Maven 2 (Version 2.0.9 oder 2.2.1) bauen, die pom.xml der Bibliothek kopiert wird im META-INF/maven/[groupId]/[artifactId]/ Verzeichnis der JAR.Fügen Sie die effektive pom.xml im Verzeichnis META-INF

jedoch in meinem Fall hat die pom.xml einen Elternteil, und ich würde die effective-pom statt der ursprünglichen pom.xml Datei (oder schließlich, beide habe) bekommen bevorzugen.

Gibt es eine Möglichkeit, das zu tun?

Antwort

4

Sie können die effektiven pom.xml erzeugen während des Zyklus installieren

<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}\effective-pom.xml</output> 
     </configuration> 
     </execution> 
    </executions> 
</plugin> 

Aber diese effektive-pom.xml kopieren unter META-INF/maven/[groupId]/[artifactId]/ Verzeichnis der JAR-Datei, werden Sie eine benutzerdefinierte Jar mojo schreiben müssen (nur durch die Erweiterung org.apache.maven.plugin.jar.JarMojo), weil der Code, der die pom.xml nach META-INF kopiert, in org.apache.maven.archiver.MavenArchiver (Zeile 487) fest codiert ist (und ich denke, dass es keine offensichtliche Möglichkeit gibt, dieses Verhalten von pom.xml zu setzen/zu überschreiben).

+1

Danke. Beachten Sie, dass, wenn Sie dieses Plugin mit ' $ {project.build.outputDirectory}/META-INF/maven/$ {pro- jekt.groupId}/$ {project.artifactId} /effective-pom.xml' konfigurieren, dann das ' effective-pom.xml wird an der richtigen Stelle im JAR! – romaintaz

+0

@romaintaz +1 Danke für die Bereitstellung der Info über $ {project.build.outputDirectory}/META-INF/maven/$ {project.groupId}/$ {project.artifactId} /effective-pom.xml. :) – dira

Verwandte Themen