简单的WAR文件合并 - 用第二个WAR文件覆盖第一个WAR文件

时间:2011-06-16 09:38:47

标签: merge war cargo maven-cargo

我想简单地合并两个WAR文件,用第二个WAR中的文件覆盖第一个WAR中的相应文件,即输出WAR将包含来自第二个WAR的web.xml(如果有的话)。我正在尝试使用cargo-maven2-plugin,但我遇到了问题。 Cargo有一些复杂的机制来合并web.xml,在大多数情况下,结果与我需要的结果不同。

我尝试了一些与以下类似的超级战争配置:

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集成的工具吗?感谢。

1 个答案:

答案 0 :(得分:1)

这可以使用Maven War Plugin来完成。如果未声明overlays顺序,则战争覆盖的顺序以相同的顺序附加,声明依赖关系。

要完全控制叠加层,应使用叠加层元素。