2010-05-02 9 views
16

Ich habe konfiguriert folgende Montage:Das Maven-Assembly-Plugin verwendet nicht den finalName für die Installation mit attach = true?

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.2-beta-5</version> 
      <executions> 
       <execution> 
        <id>${project.name}-test-assembly</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
        <configuration> 
         <appendAssemblyId>false</appendAssemblyId> 
         <finalName>${project.name}-test</finalName> 
         <filters> 
          <filter>src/assemble/test/distribution.properties</filter> 
         </filters> 
         <descriptors> 
          <descriptor>src/assemble/distribution.xml</descriptor> 
         </descriptors> 
         <attach>true</attach> 
        </configuration> 
       </execution> 
       <execution> 
        <id>${project.name}-prod-assembly</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
        <configuration> 
         <appendAssemblyId>false</appendAssemblyId> 
         <finalName>${project.name}-prod</finalName> 
         <filters> 
          <filter>src/assemble/prod/distribution.properties</filter> 
         </filters> 
         <descriptors> 
          <descriptor>src/assemble/distribution.xml</descriptor> 
         </descriptors> 
         <attach>true</attach> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Dies erzeugt zwei Zip-Dateien:

  • distribution-prod.zip
  • distribution-test.zip

Meine Erwartung für die Eigenschaft attach = true ist, dass die beiden Zip-Dateien mit dem Namen wie in pr angegeben installiert sind opery finalName. Aber das Ergebnis ist, nur eine Datei ist installiert (beigefügt) zu dem Artefakt. Das Maven-Protokoll ist:

  • distrib-0.1-SNAPSHOT.zip
  • distrib-0.1-SNAPSHOT.zip

Das Plugin ist mit dem Artifact-ID statt Eigenschaft finalName! Ist das ein Fehler?

Die letzte Installation überschreibt die erste. Was kann ich tun, um diese zwei Dateien mit unterschiedlichen Namen zu installieren?

Vielen Dank für Ihre Untersuchung. Roland

Antwort

19

Die letzte Installation überschreibt die erste. Was kann ich tun, um diese zwei Dateien mit unterschiedlichen Namen zu installieren?

Wie erwartet (ich weiß nicht, ob das ein Fehler ist oder nicht, aber so funktioniert das Assembly-Plugin). Um dies zu vermeiden, werden Sie die appendAssemblyId Eigenschaften true gesetzt und zu erhalten, ein gleichwertiges Ergebnis, um die finalName zu ${project.name} zu ändern und die assemby id-test und prod (das heißt zwei Montage Deskriptoren zu verwenden). Etwas wie folgt aus:

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.2-beta-5</version> 
     <executions> 
     <execution> 
      <id>${project.name}-test-assembly</id> 
      <phase>package</phase> 
      <goals> 
      <goal>single</goal> 
      </goals> 
      <configuration> 
      <appendAssemblyId>true</appendAssemblyId> 
      <finalName>${project.name}</finalName> 
      <filters> 
       <filter>src/assemble/test/distribution.properties</filter> 
      </filters> 
      <descriptors> 
       <descriptor>src/assemble/distribution-test.xml</descriptor> 
      </descriptors> 
      </configuration> 
     </execution> 
     <execution> 
      <id>${project.name}-prod-assembly</id> 
      <phase>package</phase> 
      <goals> 
      <goal>single</goal> 
      </goals> 
      <configuration> 
      <appendAssemblyId>true</appendAssemblyId> 
      <finalName>${project.name}</finalName> 
      <filters> 
       <filter>src/assemble/prod/distribution.properties</filter> 
      </filters> 
      <descriptors> 
       <descriptor>src/assemble/distribution-prod.xml</descriptor> 
      </descriptors> 
      </configuration> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

Wo distribution-test.xml und distribution-prod.xml declare Montage idtest und prod sind.

+0

Arbeitete wie ein Charme (habe nicht den Code, aber das Prinzip) –