2012-12-05 8 views
8

Ho la seguente configurazione:C'è un modo per dividere gli artefatti tra test e compilazione usando il plugin maven-dependency durante l'obiettivo copy-dependencies?

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.6</version> 
    <executions> 
     <execution> 
      <id>analyze</id> 
      <goals> 
       <goal>analyze-only</goal> 
      </goals> 
      <configuration> 
       <failOnWarning>false</failOnWarning> 
      </configuration> 
     </execution> 
     <!--Copy the dependencies so ant build has the same versions--> 
     <execution> 
      <id>copy-dependencies</id> 
      <phase>package</phase> 
      <goals> 
       <goal>copy-dependencies</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${project.basedir}/lib</outputDirectory> 
       <overWriteIfNewer>true</overWriteIfNewer> 
       <stripVersion>true</stripVersion> 
       <overWriteReleases>false</overWriteReleases> 
       <overWriteSnapshots>true</overWriteSnapshots> 
       <excludeTransitive>false</excludeTransitive> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

La configurazione di cui sopra discariche tutto sulla stessa cartella. Ho provato escludendo l'ambito di test aggiungendo la configurazione di prova, ma dà un errore:

Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.6:copy-dependencies (copy-dependencies) on project pcgen: Can't exclude Test scope, this will exclude everything.

C'è un modo per separare le dipendenze di prova dal resto in modo da poter copiare cartelle diverse?

+0

Perché vuoi fare? perché non usare Maven direttamente invece di Ant? – khmarbaise

+1

Solo un requisito fuori dal mio controllo. In questo momento il progetto sta migrando da ANT a Maven e ho bisogno di mantenere entrambi in esecuzione mentre la migrazione è completa. Sto cercando di ricreare il loro set con Maven. – javydreamercsw

risposta

8

I tried excluding the test scope by adding the test configuration but gives an error

Mi sono imbattuto in questo, probabilmente per motivi molto diversi, ma penso di aver trovato entrambi la risposta. Prova questo, per esempio. Avrai bisogno di pom.xml nella directory corrente, ovviamente.

mvn dependency:copy-dependencies \ 
-DincludeScope=runtime \ 
-DexcludeScope=provided \ 
-DoutputDirectory=target/war/WEB-INF/lib 

Un enorme in ritardo grazie a Brian Fox, che scrive su Maven Dependency Plugin Issue #128:

You shouldn't ever need to include or exclude two scopes at the same time because they are comprised of each other. The default is to include test scope, which includes everything. If you don't want any test dependencies or provided dependencies, then include runtime and exclude provided.

The scopes being interpreted are the scopes as maven sees them, not as specified in the pom. So the "test" scope includes everything, runtime includes compile but not provided etc.

Nel maggio 2013, il includeScope documentation was updated a:

/** 
    * Scope to include. An Empty string indicates all scopes (default). 
    * The scopes being interpreted are the scopes as 
    * Maven sees them, not as specified in the pom. In summary: 
    * <ul> 
    * <li><code>runtime</code> scope gives runtime and compile dependencies,</li> 
    * <li><code>compile</code> scope gives compile, provided, and system dependencies,</li> 
    * <li><code>test</code> (default) scope gives all dependencies,</li> 
    * <li><code>provided</code> scope just gives provided dependencies,</li> 
    * <li><code>system</code> scope just gives system dependencies.</li> 
    * </ul> 
    * 
    * @since 2.0 
    */ 
@Parameter(property = "includeScope", defaultValue = "") 
protected String includeScope; 
0

uso includeScope infatti, la portata di prova include ogni ambito, ecco perché fallisce.

<includeScope>runtime</includeScope> 
Problemi correlati