0

単純に 2 つの WAR ファイルをマージし、最初の WAR の対応するファイルを 2 番目の WAR のファイルで上書きします。つまり、出力 WAR には 2 番目の WAR からの web.xml が含まれます (存在する場合)。cargo-maven2-plugin を使おうとしていますが、問題があります。Cargo には web.xml をマージするための洗練されたメカニズムがあり、ほとんどの場合、結果は必要なものとは異なります。

次のような uberwar 構成をいくつか試しました。

1)

<uberwar>
<wars>
    <war>com.xyz:core-module</war>
    <war>com.xyz:core-extension-module</war>
</wars>
<merges>
    <merge>
        <type>web.xml</type>
        <parameters>
            <default>
                <tag name="servlet">
                    <strategy name="Overwrite" />
                </tag>
                <tag name="servlet-mapping">
                    <strategy name="Overwrite" />
                </tag>
            </default>
        </parameters>
    </merge>
</merges>
</uberwar>

2)

<uberwar>
<wars>
    <war>com.xyz:core-module</war>
    <war>com.xyz:core-extension-module</war>
</wars>
<merges>
    <merge>
        <type>web.xml</type>
        <parameters>
            <default>
                <tag name="servlet">
                    <strategy name="NodeMerge">
                        <servlet>
                            <servlet-name>$left:servlet-name</servlet-name>
                            <servlet-class>$right:servlet-class</servlet-class>
                        </servlet>
                    </strategy>
                </tag>
                <tag name="servlet-mapping">
                    <strategy name="NodeMerge">
                        <servlet-mapping>
                            <servlet-name>$left:param-name</servlet-name>
                            <url-pattern>$right:param-value</url-pattern>
                        </servlet-mapping>
                    </strategy>
                </tag>
            </default>
        </parameters>
    </merge>
</merges>
</uberwar>

どちらの場合も、私が欲しいもの、または私が望むものに似たものさえも得られません。私が間違っていることを知っていますか?または、Cargo はそのための優れたツールではないかもしれません...同じことを実行でき、Maven と統合できる他のツールを知っていますか? ありがとう。

4

1 に答える 1

1

これはMaven War Pluginを使用して実現できます。オーバーレイの順序が宣言されていない場合、依存関係が宣言されているのと同じ順序でオーバーレイが追加されます。

オーバーレイを完全に制御するには、overlays要素を使用する必要があります。

于 2011-06-18T17:31:51.110 に答える