2011-11-29 15 views

risposta

17

non è chiaro se si voleva escludere vasetti con testportata o barattoli legati prova (testclassificatore). In entrambi i casi, ci sono due proprietà di dependency:copy-dependencies che possono aiutarti.

  • excludeClassifiers Comma Separato elenco di Classificatori da escludere. Stringa vuota indica non escludere nulla (impostazione predefinita).
  • excludeScope Ambito di applicazione da escludere. Una stringa vuota indica nessun ambito (predefinito).
+7

Grazie per i suggerimenti, io uso compilare e funziona. Grazie. – Mike

+2

@Raghuram Mike qui ha sollevato un punto, non si può escludere il test dell'ambito. vedi http://stackoverflow.com/questions/5850788/filter-dependencies-copied-by-mavens-copy-dependency – Dudi

+0

Sto usando '' per condizione, le dipendenze transitive non vengono copiati per l'ambito predefinito, anche se '' è falso –

19

Mike risposto loro domanda in un commento sopra. Penso che il caso d'uso di Mike sia simile al mio, dove voglio copiare tutti i vasi da cui dipendo e il mio barattolo per creare una gerarchia di directory sufficiente per eseguire il programma senza includere tali dipendenze direttamente nel mio jar.

La risposta a raggiungere questo obiettivo è:

<includeScope>compile</includeScope> 

Questa direttiva va nella sezione del pom.xml per il plugin Maven-dipendenza. Per esempio:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.4</version> 
    <executions> 
     <execution> 
      <id>copy-dependencies</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>copy-dependencies</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${project.build.directory}/lib</outputDirectory> 
       <includeScope>compile</includeScope> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

excludeScope non funzionerà perché escludendo prova interrompe la costruzione ed esclude tutti i possibili ambiti. Invece l'ambito incluso deve essere regolato.

+0

Usando ' runtime' può essere meglio ancora, alla copiatura compilare e dipendenze runtime. Per esempio, se si utilizza la registrazione SLF4J, allora il 'slf4j-api' sarebbe una dipendenza momento della compilazione, mentre i ponti (' JCL-over-slf4j', 'luglio-to-slf4j') e il backend (ad esempio' slf4j -log4j12') sarebbero delle dipendenze di runtime. – zwets

Problemi correlati