2017-02-01 20 views
0

ターゲットプラグインをビルドしたら、ターゲットディレクトリのjarを別のディレクトリ(例:/ target/runtime)にコピーする目的で、リソースプラグインを使用しようとしています。Maven maven-resources-pluginコピー先のjar

jarがビルドされる前に、プロセスの開始時にリソースがコピーされるのがわかります。そのため、私は検証段階で、つまりjarがビルドされた後にこれを実行する必要があるようです。しかし、これは動作していません。他のファイルはコピーされますが、jarファイルはコピーされません。

  <plugin> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>3.0.1</version> 
      <executions> 
       <execution> 
        <id>copy-resources</id> 
        <phase>validate</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${project.build.directory}/runtime</outputDirectory> 
         <resources> 
          <resource> 
           <filtering>true</filtering> 
           <directory>${project.basedir}/target</directory> 
           <targetPath>${project.build.directory}/target/runtime</targetPath> 
           <includes> 
            <include>*.jar</include> 
           </includes> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
+0

明確にするために、あなたは両方 'target'と'ターゲット/ runtime'で生成されたJARをしたいです、または 'target/runtime'の中でのみですか? – Tunaki

+0

ターゲットとターゲット/ランタイムの両方で – MikeJ

+0

なぜこのようなものが必要ですか?そして、なぜ間違っているJARファイルのフィルタリングを行うように設定したのですか? – khmarbaise

答えて

0
`<project> 
    [...] 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <version>3.0.0</version> 
     <executions> 
      <execution> 
      <id>copy</id> 
      <phase>package</phase> 
      <goals> 
       <goal>copy</goal> 
      </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <artifactItems> 
      <artifactItem> 
       <groupId>junit</groupId> 
       <artifactId>junit</artifactId> 
       <version>3.8.1</version> 
       <type>jar</type> 
       <overWrite>false</overWrite> 
       <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory> 
       <destFileName>optional-new-name.jar</destFileName> 
      </artifactItem> 
      </artifactItems> 
      <outputDirectory>${project.build.directory}/wars</outputDirectory> 
      <overWriteReleases>false</overWriteReleases> 
      <overWriteSnapshots>true</overWriteSnapshots> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    [...] 
</project>` 

私はこれを複数回使用しているthisを参照してください、仕事をしているようです。

+0

私は、依存関係のjarファイルを特定の場所にコピーするのが問題ではないと思います。問題は、構築されたjarをターゲット/ランタイムにコピーすることです。 – GauravJ

+0

これは、依存関係jarをコピーしません。ここでの成果物は、依存関係jarではなく、新しい組み込みjarのみを参照しています。答えに記載されているApache mavenリンクを確認してください。 – Optimus

+0

ありがとうございました。私はここで述べたJunitの依存関係と混同しています。参照したページには、作成された成果物をコピーする方法を指定する別のセクションがあります。 – GauravJ

0

リソースコピーのプラグイン定義のフェーズは、検証として定義されています。このプラグインが実行されるとき、Jarはビルドされません。ライフサイクルの詳細については、hereと定義されています。

、それを確認すると、以下のようにあなたがコピーファイルを正常にプラグインの位相を変更する場合は、

Sample Project

関連する問題