2010-11-04 12 views
16

sto usando il plugin assembly maven per confezionare un file jar. Ma quando eseguo mvn package, Maven attiva sempre [jar: jar {execution: default-jar}] per creare un file jar predefinito. Quindi avrò 2 file jar (uno creato dal plugin assembly e uno creato da jar maven che non voglio essere creato). Come posso disattivare l'esecuzione: default-jar.disabilita l'esecuzione: default-jar

nel mio pom.xml, sto usando: <packaging>jar</packaging>. non lo voglio cambiare a <packaging>pom</packaging>.

risposta

33

(...) Così avrò 2 file jar (uno creato da plug-in assemblea e uno creato da jar Maven che non voglio essere creato).

Sembra che tu stia facendo cose piuttosto complicate. Forse Maven non è lo strumento giusto nel tuo caso.

Come disattivare l'esecuzione: default-jar.

È possibile impostare il <phase> dell'esecuzione corrispondente a qualcosa di sconosciuto, come none:

<plugin> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.3.1</version> 
    <executions> 
     <execution> 
     <id>default-jar</id> 
     <phase>none</phase> 
     </execution> 
    </executions> 
    </plugin> 
    <plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.2</version> 
    <configuration> 
     <descriptorRefs> 
     <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
    </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> 

Questo sembra funzionare fintanto che si sta fornendo qualcosa di diverso per essere installato, come un assemblaggio (Ho provato solo install). Ma certo, questo è un hack.

+0

È un hack, ma è bello sapere questo hack. Grazie! (+1) –

+0

BTW, dormi mai? Anche tu sei al CET, vero? –

+0

@seanizer: LOL. Sì, lo faccio :) E no, al momento non lo sono, mi sto muovendo. –

3

Pur non essendo una risposta diretta alla domanda, si potrebbe escludere il vaso creato da vaso Maven utilizzando <useProjectArtifact>false</useProjectArtifact>

+0

Grazie Raghuram – David