Оригинал сообщения:
Я хочу, чтобы фильтровать дескриптор web.xml
развертывания веб-приложения Java 6, который работает на контейнере сервлетов Jetty 8.1, но он не работает до сих пор. Я хочу, чтобы установить другой этап JSF проекта в зависимости от активного профиля Maven:Фильтрация web.xml при использовании плагина причал-maven?
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>${jsfProjectStage}</param-value>
</context-param>
В разделе Профили в pom.xml
выглядит следующим образом:
<profiles>
<profile>
<id>development</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<jsfProjectStage>Development</jsfProjectStage>
</properties>
</profile>
<profile>
<id>production</id>
<properties>
<jsfProjectStage>Production</jsfProjectStage>
</properties>
</profile>
</profiles>
В Интернете вы найдете несколько способов для достижения этой цели , например используя альтернативные файлы web.xml. Но для меня самый очевидный способ, кажется, использует Maven войны-плагин:
<build>
<finalName>...</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<webResources>
<webResource>
<directory>src/main/webapp/WEB-INF</directory>
<filtering>true</filtering>
<targetPath>WEB-INF</targetPath>
<includes>
<include>web.xml</include>
</includes>
</webResource>
</webResources>
</configuration>
</plugin>
...
</plugins>
</build>
Поскольку вы найдете много ответов или статьи с этого фрагмента кода, я задаюсь вопросом, почему это не работает для меня. Я попытался заменить <webResource>
на <resource>
(часто нашел его таким образом), и я также попытался добавить <filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
, но ничего из этого не работает.
У кого-нибудь есть идея, что здесь отсутствует, чтобы правильно фильтровать web.xml? Или я должен явно указать <filters>
?
Благодаря
Sebastian
Обновление:
Благодаря user944849 теперь я знаю, что причина моей не фильтрованной web.xml
не Maven войны-плагин, но мола-Maven-плагин, так как я использую mvn jetty:run
для запуска (незамонтированного) webapp. Кто-нибудь знает, как принести плагин причал-maven для фильтрации web.xml
перед запуском несобранного webapp?
Что ваша команда Maven? В частности, как вы активируете профиль? '' означает «активен, только если другой профиль не активен». –
user944849
Я использую Maven изнутри Eclipse, а _Goals_ для моей _Run Configuration_ для сборки разработки установлен на 'clean jetty: run' без явного набора _Profiles_. Цель для сборки сборки установлена на 'clean install' с параметром _Profiles_, установленным в' production'. –
Делает ли производство один фильтр web.xml, как и следовало ожидать? Меня совершенно не удивляет, что 'jetty: run' не работает, поскольку' jetty: run' выполняет _unassembled_ webapp. Фильтрация происходит, когда плагин войны запускается как часть фазы пакета, в котором 'jetty: run' не использует IIRC. Вероятно, вам нужно провести небольшое исследование, чтобы выяснить, как сделать причал для фильтрации. Или вам может понадобиться использовать причал против полностью собранного webapp. – user944849