2009-11-14 4 views
6

Ich benutze Maven 2.0.9, um ein Multi-Modul-Projekt zu erstellen. Ich habe das Assembly-Plugin in meinem Eltern-Pom definiert. Ich kann meine Baugruppen unter VerwendungMulti-Modul-Projekt - Assembly-Plugin

mvn install assembly:assembly 

bekommen Dieser Befehl führt die Tests zweimal, einmal während der Installationsphase und ein weiteres während der Montage. Ich habe versucht Assembly: Single, aber es wirft einen Fehler. Jede Hilfe, um meine Assemblies zu erstellen, ohne die Tests zweimal auszuführen, wird sehr geschätzt.

+0

Bitte geben Sie den Fehler. Ohne es ist schwer etwas zu sagen. –

Antwort

7

Wenn Sie das Assembly-Mojo aufrufen, erstellt Maven das Projekt mit dem normalen Lebenszyklus bis zur package-Phase. Also, wenn Sie laufen:

mvn install assembly:assembly 

Sie tatsächlich Maven zu sagen sind ein paar Dinge zweimal laufen und dazu gehört auch die Testphase, wie Sie im documentation des Standard-Lebenszyklus zu sehen.

mvn assembly:assembly 

Oder das Plugin auf einem Projekt Build Lebenszyklus binden: nur laufen

Um dies zu vermeiden, sollten Sie

<project> 
    ... 
    <build> 
    ... 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
      ... 
     </configuration> 
     <executions> 
      <execution> 
      <id>make-assembly</id> <!-- this is used for inheritance merges --> 
      <phase>package</phase> <!-- append to the packaging phase. --> 
      <goals> 
       <goal>single</goal> <!-- goals == mojos --> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     ... 
</project> 
+0

Hey, Pascal Thivent: Deine Antwort hat mir geholfen, die Unterschiede zwischen mvn install assembly: assembly und mvn assembly: assembly zu verstehen. Kannst du mir helfen, die Unterschiede zwischen mvn assembly zu verstehen: assembly und mvn package assembly: assembly? – Patricia

1

Ich denke, die Fehlermeldung irreführend, es schlägt vor, Sie müssen laufen die "package" -Phase innerhalb des SAME maven-Aufrufs als Aufruf des Assembly-Plugins.

Haben Sie "mvn package assembly: assembly" oder "mvn install assembly: assembly" versucht?

Funktioniert für mich unter Linux, JDK 1.6.0_16, Maven 2.2.1, Assembly Plugin 2.2-Beta-4.

+0

Das oben vorgeschlagene POM-Snippet (bindendes Assembly-Plug-in an die 'ackage-Phase') sollte genauso funktionieren. Denken Sie jedoch daran, dass Sie das Assembly-Plug-in nicht explizit in der Befehlszeile aufrufen müssen. Ein 'mvn-Paket' (oder 'mvn install') erstellt automatisch die Assembly. Ich bin mir nicht sicher, ob ich jemals das Assembly-Plugin auf diese Weise benutzt habe. Normalerweise rufe ich es explizit auf, weil es mir oft nicht wichtig ist, dass die Assembly generiert wird. – JavaGuy

+0

Ich band Assembly-Plugin zu Paket oder installieren Phase, RAM MVN installieren oder MVN-Paket. Immer noch der gleiche Fehler. Dies geschieht nur im Multi-Modul-Projekt. – user209947