4

私はMavenアセンブリプラグインを使用して製品のWARを構築しています(以前はAntによって行われました)。Apache Antには多くの残り物があるため、ビルドプロセスを容易にする特定の要件が1つあります。それは、依存関係の特定のサブフォルダー(jarまたはwarリソースなど)を特定のターゲットサブフォルダーにコピーすることです。

これまでのところ、アセンブリ記述子でを指定できることを学びました<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>

my-specific-dependency:warからWEB-INF/myresourcesにいくつかのフォルダーをコピーしたいと言いたいです。

注意:アーティファクトの内部を知る必要がないため、これはあまり正しい要件ではないことを認識しています。正しい方法は、アーティファクト全体をターゲットディレクトリに抽出することを宣言することです(宣言型のアプローチが必要です)。

4

3 に答える 3

3

これを行うには、Maven Dependencyプラグインを使用して、解凍の目標 を設定できるはずです: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>…&lt;/outputDirectory>
           </artifactItem>
         </artifactItems>
      </configuration>
    </execution>
  </executions>
</plugin>
于 2012-04-23T10:37:24.380 に答える
2

まず、 maven-assembly-pluginを使用する代わりに、 maven-war-pluginをチェックしてそのジョブを実行することをお勧めします。さらに、解凍などのオプションを含むdependencySetに関するドキュメントを確認してください。モジュールのパッケージをwarに変更し、Mavenの規則に適合させ、Mavenをantとして使用しないでください...現在はそのように見えます。

于 2012-04-23T10:38:08.343 に答える
0

アセンブリ記述子(バージョン2.2-beta-1以降)は、を含むunpackOptions命令を提供することが判明しました<dependencySet>。まさに私が必要としていたもの。

于 2012-04-23T10:35:27.937 に答える