maven uber war (cargo-maven2-plugin) объединяет только первый элемент <context-param>
Я пытаюсь объединить две войны и тем самым файлы web.xml с помощью плагина maven uber war cargo-maven2-plugin. Объединение всех тегов (фильтров, сервлетов) происходит по желанию, но для <context-param>
это только объединение первого элемента, определенного в web.xml в RHS. Я хочу сохранить все контекстные параметры в web.xml в LHS, объединить все <context.param>
элементы, определенные в моем web.xml по RHS. Любая помощь будет принята. Вот мой код
web.xml на RHS
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- ** SPRING ** -->
<context-param>
<param-name>contextInitializerClasses</param-name>
<param-value>com.myorg.context.MyApplicationContextInitializer</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:conf/spring/*.xml</param-value>
</context-param>
<context-param>
<description>Location(s) to search for the Log4J config file</description>
<param-name>log4jConfigLocation</param-name>
<param-value>file:/dir/path/log4j.xml /WEB-INF/log4j.xml</param-value>
</context-param>
<context-param>
<description>
Boolean flag indicating whether internal Log4J debugging statements should be written. Log4J
will write debugging messages to System.out and error messages to System.err.
</description>
<param-name>log4jConfigDebug</param-name>
<param-value>false</param-value>
</context-param>
**
- merge.xml
**
<?xml version="1.0"?>
<uberwar>
<wars>
<war>org.forgerock.openam:openam-server</war>
<war>com.myorg.xyz.addons:my-sso-addons-web</war>
</wars>
<merges>
<merge>
<type>web.xml</type>
<parameters>
<default>
<!-- Preserve execution order of filter-mappings -->
<tag name="context-param">
<strategy name="ChooseByName">
<default>
<strategy name="Preserve" />
</default>
<choice name="contextInitializerClasses">
<strategy name="Overwrite" />
</choice>
<choice name="contextConfigLocation">
<strategy name="Overwrite" />
</choice>
<choice name="log4jConfigLocation">
<strategy name="Overwrite" />
</choice>
</strategy>
</tag>
<tag name="filter-mapping">
<strategy name="Preserve"/>
</tag>
</default>
</parameters>
</merge>
</merges>
</uberwar>
pom.xml
<!-- other entries are here -->
<packaging>uberwar</packaging>
<build>
<plugins>
<!-- merges openam-server with openam-addons-web-common -->
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<!-- merges the wars -->
<descriptor>src/assembly/merge.xml</descriptor>
<configuration>
<type>existing</type>
<home>${jboss.home}/aclsso</home>
</configuration>
<deployer>
<type>installed</type>
</deployer>
<deployables>
<deployable>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<type>war</type>
<properties>
<context>openam</context>
</properties>
</deployable>
</deployables>
</configuration>
</plugin>
</plugins>
</build>
1 ответ
Что ж, проблема в данном конкретном случае заключалась в разнице в версии xmlns и расположении схемы в верхней части файла web.xml. Первая война имела версию =2.4, а вторая - версию 3.0. Синхронизация обеих схем web.xml с помощью следующего позволила решить проблему (хотя я понятия не имею, почему она объединила фильтр, теги сервлета и не удалось объединить все теги context-param).
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
я