2016-04-07 30 views
2

maven-dependency-pluginのコピー依存関係の目標を使用しようとしています。 に以下のスニペットを付けて確認しました。Maven依存関係プラグインコピー依存関係はoutputDirectoryを無視します

私の問題は:<outputDirectory>ノードを指定しても、依存関係は常に target\dependencyフォルダにコピーされます。ここで

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

質問:私が間違ってやっていますか?出力ディレクトリをプロジェクト外に宣言することは可能ですか?たとえば、c:\temp

+1

Mavenをどのように起動しますか?コマンドは何ですか? – Tunaki

+0

私は日食から、コマンドラインから試しました。コマンドは:mvn dependency:copy-dependencies – zsom

答えて

3

あなたが有する従ってpackage相及びプラグイン(実行)を行いながら、それだけで、つまり、mvn package呼び出し中にプラグインによってピックアップされ、のみその範囲内に定義された構成とmaven-dependency-pluginの実行を構成それへの拘束。

次のようにコマンドラインからプラグインを起動した場合:

mvn dependency:copy-dependencies 

設定が無視されますので、それは確かにのみ、デフォルト値を使用します。

は、実際には、outputDirectoryオプションのデフォルト値は確かである:

デフォルト${project.build.directory}/dependency

達人では、プラグイン構成は、外の(一般的な設定として定義することができますexecutionセクション、すべての実行とコマンドラインの呼び出しに適用されます)または実行ごとに(あなたの場合のようにexecutionセクション内)あなたのケースでは


、おそらくそう簡単に次のようにプラグインのセクションを変更、設定は両方のケースで有効になりたい:

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

注:我々は実行から、設定を上に移動プラグイン(グローバル)スコープのスコープ。


また、我々は、Mavenのは、常に各おきmvn package呼び出し時にこのプラグインのゴールを実行することを意味し、実行し、保管上の構成では、注意してください。この動作が不要で、コマンドラインの実行のみを使用する場合は、executionsセクションをすべて削除することができます。

+0

あなたは素晴らしいです!私はあなたの答えを3分で受け入れることができます。どうもありがとう – zsom