2016-04-07 7 views
2

Ich versuche das maven-dependency-plugin copy-dependencies goal zu verwenden. Ich überprüfte its official example mit dem Ausschnitt unten.Maven maven-dependency-plugin copy-dependencies ignoriert outputDirectory

Mein Problem ist: die Abhängigkeiten werden immer in target\dependency Ordner kopiert, auch wenn ich einen <outputDirectory> Knoten angeben.

Hier ist der Teil meiner pom.xml:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.10</version> 
      <executions> 
       <execution> 
       <id>copy-dependencies</id> 
       <phase>package</phase> 
       <goals> 
        <goal>copy-dependencies</goal> 
       </goals> 
       </execution> 
       <configuration> 
         <outputDirectory>${project.build.directory}/aaa</outputDirectory> 
         <overWriteReleases>true</overWriteReleases> 
         <overWriteSnapshots>true</overWriteSnapshots> 
         <overWriteIfNewer>true</overWriteIfNewer> 
       </configuration>     
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Frage: Was ich falsch mache? Ist es möglich, das Ausgabeverzeichnis außerhalb des Projekts zu deklarieren? Zum Beispiel: c:\temp?

+1

Wie rufen Sie Maven? Was ist der Befehl? – Tunaki

+0

Ich versuchte es von Eclipse und von der Befehlszeile. Der Befehl lautet: mvn-Abhängigkeit: Kopierabhängigkeiten – zsom

Antwort

3

Sie konfiguriert ist, eine Ausführung des maven-dependency-plugin mit einer Konfiguration nur in ihrem Umfang definiert sind, daher wird sie nur durch das Plugin während eines mvn package Invokation abgeholt werden, das heißt, während die package Phase durchführt und das Plugin (Ausführungen) mit eine Bindung an sie.

Wenn Sie das Plugin von der Kommandozeile wie folgt aufrufen:

mvn dependency:copy-dependencies 

Es wird in der Tat nur Standardwerte verwenden, da Ihre Konfiguration wird ignoriert.

Tatsächlich ist der Standardwert für die outputDirectory Option ist in der Tat:

Standard: ${project.build.directory}/dependency

In Maven kann eine Plugin-Konfiguration als allgemeine Konfiguration definiert werden (außerhalb eines execution Abschnitt, der auf alle Ausführungen und Befehlszeilenaufrufe angewendet wird) oder pro Ausführung (in einem execution Abschnitt, wie in Ihrem Fall).


In Ihrem Fall möchten Sie wahrscheinlich die Konfiguration in beiden Fällen gültig sein, also einfach das Plugin Abschnitt wie folgt ändern:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.10</version> 
      <configuration> 
        <outputDirectory>${project.build.directory}/aaa</outputDirectory> 
        <overWriteReleases>true</overWriteReleases> 
        <overWriteSnapshots>true</overWriteSnapshots> 
        <overWriteIfNewer>true</overWriteIfNewer> 
      </configuration> 
      <executions> 
       <execution> 
       <id>copy-dependencies</id> 
       <phase>package</phase> 
       <goals> 
        <goal>copy-dependencies</goal> 
       </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Hinweis: zogen wir die Konfiguration auf, die aus der Ausführung Bereich zu Plugin (global) Bereich. an jedem eines jeden mvn package Aufruf


Beachten Sie auch, in der Konfiguration über wir die Ausführung gehalten, was bedeutet, Maven werden immer dieses Plugin Ziel auszuführen. Wenn Sie dieses Verhalten nicht möchten und nur die Ausführung der Befehlszeile erwarten, können Sie den Abschnitt executions überhaupt entfernen.

+0

ihr seid klasse! Ich kann deine Antwort in 3 Minuten annehmen. Danke vielmals – zsom

Verwandte Themen