2012-04-23 12 views
4

Mavenアセンブリプラグインを使用して、Antの以前の製品を構築しています。 Apache Antには多くの残されたものがあるので、特定のターゲットサブフォルダに依存性のある特定のサブフォルダ(例えば、jarやwarリソース)をコピーするなど、ビルドのプロセスを簡単にするための特別な要件があります。Mavenアセンブリ:依存関係の特定のサブフォルダからのコピー

これまで、アセンブリ記述子で<outputDirectory>を指定できることを知りましたが、<sourceDirectory>を指定する機会はありますか?たとえば、このルールを1つのWARまたはJAR型依存性に対して適用したいとします。

(正確ではない100%)アセンブリ・ディスクリプタのフラグメントのこの例を考えてみましょう:

<dependencySet> 
     <unpack>true</unpack> 
     <scope>runtime</scope> 
     <useProjectArtifact>false</useProjectArtifact> 
     <includes> 
      <include>my-specific-dependency:war</include> 
     </includes> 
     <outputDirectory>WEB-INF/myresources</outputDirectory> 
    </dependencySet> 

私は私が私の固有の依存性から、いくつかのフォルダをコピーしたいことを言いたい:WEB-INF/MyResourcesでの戦争を。

EDIT NB:私は、これは我々がアーティファクトの内側に何を知っているべきではないとして非常に正しい要件ではないことを承知している、正しい方法は、ターゲットディレクトリに全案件を抽出するために宣言されるだろう(ニート宣言型アプローチ)。

答えて

3

あなたは、これを行うにMavenの依存関係のプラグインを使用することができるはずです。さらに、アンパッケージなどのオプションを含むdependencySetについては、documentationをチェックしてください。モジュールのパッケージを戦争に変更し、Maven規則に適合させ、Mavenをantとして使用しないようにしてください。

+0

ありがとうございました。あなたのご意見は大変助かりました。今度は、maven-war-pluginとmaven-dependency-pluginを使用して最終WARを構築する方法を変更したいと考えています。同じartifactを参照する複数の要素を持つことはできますが、異なるを持つことができますか? –

+0

あなたはそれを試すことができますね。それでも問題が解決しない場合は、複数の*実行*を使用することができます。 – nwinkler

+0

正直言って、私が提供した答えは、元の質問への直接的な答えを提供します。しかし、あなたは、簡単で正確な解決策で目標を達成する方法を明確に示しました。 –

0

を含むunpackOptions命令を提供することが判明しました(バージョン2.2-beta-1以降)。正確に私が必要としたもの。私はあなたの代わりにmaven-assembly-pluginでその仕事をするためmaven-war-plugin確認することをrecomment http://maven.apache.org/plugins/maven-dependency-plugin/unpack-mojo.html

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>unpack-database-scripts</id> 
     <phase>compile</phase> 
     <goals> 
     <goal>unpack</goal> 
     </goals> 
     <configuration> 
      <artifactItems> 
      <artifactItem> 
      <groupId>myGroup</groupId> 
      <artifactId>myArtifact</artifactId> 
      <version>1.0</version> 
      <type>war</type> 
      <overWrite>true</overWrite> 
      <includes>...</includes> 
      <outputDirectory>…</outputDirectory> 
      </artifactItem> 
     </artifactItems> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
2

まず:目標を解凍して

+0

あなたはおそらく、私がしようとしているmaven-war-pluginを試してみるべきでしょう。 @nwinklerが提案した提案を組み合わせることで、アセンブリプラグインを使用して実現すると期待していたのと同じ柔軟性を実現できることを願っています。 –

関連する問題