我想简单地合并两个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集成的工具吗?感谢。
答案 0 :(得分:1)
这可以使用Maven War Plugin来完成。如果未声明overlays顺序,则战争覆盖的顺序以相同的顺序附加,声明依赖关系。
要完全控制叠加层,应使用叠加层元素。