Решение 1
Вы можете использовать комбинацию профилей и конфигурацию maven-war-plugin.В POM проекта WAR определите активированный по умолчанию профиль и один явно активированный, таким образом они будут взаимоисключающими (если у вас не определены другие профили, но вам нужно будет только запомнить себя, чтобы активировать один или другой):
<profiles>
<profile>
<id>security</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<web.xml.properties>security.properties</web.xml.properties>
</properties>
</profile>
<profile>
<id>no-security</id>
<properties>
<web.xml.properties>no-security.properties</web.xml.properties>
</properties>
</profile>
</profiles>
Затем в разделе сборки определите соответствующую фильтрацию:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<filters>
<filter>${web.xml.filter}</filter>
</filters>
<webResources>
<resource>
<directory>WebContent/WEB-INF</directory>
<filtering>true</filtering>
<targetPath>WEB-INF</targetPath>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
Измените web.xml
так, чтобы в переменном месте у вас был маркер шаблона, например ${security.fragment}. Finally, add two property files
security.properties and
no-security.properties`:
# file: security.properties
security.fragment=<your_security_config>...</your_security_config>
# file: no-security.properties
security.fragment=
Вызывать Maven либо с -P no-security
или -P security
, либо без -P
.Конец.
Решение 2
Это не использует фильтрацию, но 2 отдельных web.xml
с.Это немного хуже, так как он повторяет код.
Определите профили, как в решении 1, но установите другое свойство: расположение web.xml
в вашем проекте.Используйте это свойство в разделе <build>
, чтобы указать его плагину maven-war:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>${web.xml.location}</webXml>
</configuration>
</plugin>
</plugins>
</build>
На самом деле, я боролся с ним в своем проекте, когда писал это.Я выбрал второе решение, так как метод с фильтрацией ресурсов плохо работает с плагином m2eclipse.