【问题标题】:Simple WAR file merging - overwriting first WAR file with second WAR file简单的 WAR 文件合并 - 用第二个 WAR 文件覆盖第一个 WAR 文件
【发布时间】:2011-09-16 05:22:57
【问题描述】:

我想简单地合并两个 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 集成的工具吗?谢谢。

【问题讨论】:

    标签: merge war cargo maven-cargo


    【解决方案1】:

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

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

    【讨论】:

    • 我在主题探索期间注意到了覆盖功能,但我不确定是否需要这种行为。感谢您的回答,我对覆盖进行了更多调查,现在我发现需要合并功能。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 2021-08-09
    • 2015-03-07
    • 1970-01-01
    相关资源
    最近更新 更多