0

我想简单地合并两个 WAR 文件,用来自第二个 WAR 的文件覆盖第一个 WAR 中的相应文件,即输出 WAR 将包含来自第二个 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来完成。如果未声明覆盖顺序,则战争覆盖的顺序与声明依赖项的顺序相同。

要完全控制覆盖,应使用覆盖元素。

于 2011-06-18T17:31:51.110 回答