0

maven-assembly-plugin を含むカスタム assembly.xml ファイルを使用して tar.gz アセンブリを構築しています。その tar 内には {stuff +} WAR ファイルがあり、現在特定の依存関係があります。

WEB-INF/lib/my-dependency.jar

それはすべてうまくいきます。

ここで、その依存関係を取得して WAR ファイルから削除し、代わりに tar.gz のルートに配置します。

現在の間違ったソリューション

依存関係を tar に入れることはできますが、戦争から削除することはできません (現在のソリューションを使用して)

<fileSets>
    <fileSet>
        <outputDirectory>/config/lib</outputDirectory>
        <directory>${project.build.directory}/fa/WEB-INF/lib</directory>
        <includes>
            <include>my-dependency-*.jar</include>
        </includes>
    </fileSet>
</fileSets>

上記を修正するには、WAR が作成される前に、アセンブリ プラグイン内の ${project.build.directory}/fa/WEB-INF/lib/my-dependency-*.jar も削除する方法が必要です... (私は上記のディレクティブが実行されるまでに、すでに作成されていると確信しています。

あるいは、別のアプローチの方が良いかもしれません

4

1 に答える 1

0

戦争がこのプロジェクトの依存関係である場合は、アセンブリプラグインを使用して解凍し、jarファイルなしで再パックできます。重要な構成は、unpackプロパティとunpackOptionsプロパティです。

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>my-stripped-war</id>

<formats>
    <format>war</format>
</formats>    

<dependencySets>
    <dependencySet>
        <outputDirectory></outputDirectory>
        <useTransitiveDependencies>false</useTransitiveDependencies>
        <useProjectArtifact>false</useProjectArtifact>
        <includes>
            <include>*:war</include>  <!-- however specific you need here -->
        </includes>
        <unpack>true</unpack>
        <unpackOptions>
            <excludes>
                <!-- jars to exclude here -->
            </excludes>
        </unpackOptions>
    </dependencySet>
</dependencySets>
</assembly>

次に、現在のアセンブリ記述子で、fileまたはfileSetを使用してこのストリップされた戦争を引き込みます。ストリップされた戦争をプロジェクトに添付する必要がある場合は、現在の記述子の前にこの記述子をアセンブリプラグイン要素に追加するだけです。アタッチしない場合は、複数のアセンブリプラグインの実行を使用<attach>し、ストリップされた戦争の実行に対してfalseに設定します。

戦争がこのプロジェクトの一部として構築されている場合は<packagingExcludes>、warプラグイン構成の要素を使用して、不要なjarファイルを戦争から除外してみてください。追加のアセンブリ記述子は必要ありません。

于 2012-06-06T16:52:41.847 に答える