2012-12-05 7 views
8

Mam następującą konfigurację:Czy istnieje sposób na dzielenie artefaktów między testem a kompilacją za pomocą wtyczki zależnej od maven podczas celu zależności kopiowania?

<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> 

Powyższa konfiguracja zrzuca wszystko na tym samym folderze. Próbowałem z wyłączeniem zakresu testowy dodając konfigurację testową ale daje błąd:

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.

Czy istnieje sposób, aby oddzielić testowych zależności od reszty, więc mogę skopiować do różnych folderach?

+0

Dlaczego chcesz zrobić? dlaczego nie użyć Mavena bezpośrednio zamiast Anta? – khmarbaise

+1

Tylko wymóg poza moją kontrolą. W tej chwili projekt przenosi się z ANT do Maven i muszę kontynuować działanie, gdy migracja się zakończy. Próbuję odtworzyć ich konfigurację z Mavenem. – javydreamercsw

Odpowiedz

8

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

Po prostu natknąłem się na to, prawdopodobnie z różnych powodów, ale myślę, że znalazłem obie odpowiedzi. Spróbuj na przykład. Oczywiście będziesz potrzebował pom.xml w bieżącym katalogu.

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

Ogromne spóźnione podziękowania dla Briana Foxa, który pisze na 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.

W maju 2013 r includeScope documentation was updated do:

/** 
    * 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

użytku includeScope Rzeczywiście, zakres badań obejmuje każdy zakres, dlatego zawodzi.

<includeScope>runtime</includeScope> 
Powiązane problemy