Frage

Ich habe eine Reihe von Maven-Projekten, die für eine 3rd-Party-Anwendung verschiedene Komponenten eines Plugin-Framework aufbauen. Ich habe einen Master-Projekt, das die Aggregation mit ( Element), umfasst alle Teilprojekte. Das Hauptprojekt ruft auch die Maven-Assembler-Plugin. Ich kann jetzt alle Teilprojekte bauen und haben die Assembler ihre Ausgänge / files / Quellen / Ressourcen usw. in einem Master-Build-Verzeichnis kopieren und dann zip all diese Dateien in einer einzigen Verteilung zip up. Ich tue dies mit dem Befehl:

MVN Packungsanordnung: Montage

Das alles funktioniert super. Ich möchte nun diese Zip-Datei in ein anderes Maven Plugin übergeben, die es öffnet sich und erstellen Sie eine benutzerdefinierte Manifest-Datei, die die zip Inhalt auflistet und dann fügen Sie diese Manifest-Datei zurück in die Zip-Datei. Ich habe das Plugin geschrieben, dies zu tun und es funktioniert gut.

Mein Problem wird immer dieses Plugin von Maven als Teil des Build-Prozesses ausgeführt werden.

Das Plugin die Ausgabe von dem Assembler müssen, aber es scheint nicht zu sein, jedenfalls ein Plugin nach dem Assembler laufen.

Kann mir jemand helfen?

War es hilfreich?

Lösung

hat auch die Montage Unter der Annahme, bereits definiert worden, um die Baugruppe in Ziel / Baugruppen zu erstellen, müssen Sie einfach die Ausführung der Plugins Phasen des Standard-Lebenszyklus , so können Sie mvn install laufen (zum Beispiel) und die Plugins während dieser Lebenszyklus ausgeführt haben.

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
      <execution>
        <id>generate-assembly</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
        <configuration>
          <!--your configuration here -->
          ...
        </configuration>
      </execution>
    </executions>
  </plugin>

Sie binden dann die Ausführung Ihres Plugins zu einer späteren Phase (zB Integrationstest), so dass es in der Lage ist, die Assembly-Dateien zuzugreifen:

  <plugin>
    <groupId>your.plugin.groupId</groupId>
    <artifactId>your-artifactId</artifactId>
    <executions>
      <execution>
        <id>mung-manifests</id>
        <phase>package</phase>
        <goals>
          <goal>your-goal-name</goal>
        </goals>
        <configuration>
          <assemblyDirectory>${project.build.directory}/assemblies</assemblyDirectory>
        </configuration>
      </execution>
    </executions>
  </plugin>

Mit diesem Ansatz jedes Plugin wird in der entsprechenden Phase ausgeführt wird (Paket), wenn Sie laufen mvn package (oder spätere Phase wie installieren, überprüfen, bereitstellen ...).

Beachten Sie, dass Ihr Plugin definiert werden sollte nach die Montage Plugin , um sicherzustellen, dass es danach ausgeführt wird (es ist nicht etwa, um egal, ob sie in verschiedenen Phasen sind, wenn nur in der gleichen Phase).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top