简单的 WAR 文件合并 - 用第二个 WAR 文件覆盖第一个 WAR 文件
我想简单地合并两个 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 集成的工具吗?谢谢。
I want to simply merge two WAR files, overwriting corresponding files in first WAR with files from second WAR i.e. output WAR will contain web.xml from second WAR if one was present there. I am trying to use cargo-maven2-plugin but I have problems with that. Cargo has some sophisticated mechanism for merging web.xml and in most cases the result is different from that what I need.
I tried some uberwar configurations similar to following ones:
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>
In both cases I do not get what I want or even something similar to that what I want. Do you have any idea what I am doing wrong? Or maybe Cargo isn't a good tool for that... do you know any other tools that could do same thing and could be integrated with Maven? Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这可以使用 Maven War 插件 来完成。如果 overlays 命令未宣布为战争命令覆盖附加的顺序与声明依赖项的顺序相同。
要完全控制叠加层,应使用 overlays 元素。
This can be accomplished using the Maven War Plugin. If the overlays order isn't declared the order of the war overlaying appens in the same order the dependencies are declared.
To get full control of the overlay the overlays element should be used.