Фильтрация файлов Maven в WEB-INF

Я пытаюсь добавить некоторую фильтрацию в файл контекста приложения, который находится в каталоге WEB-INF.

У меня есть файл, который нужно отфильтровать (xmlgateway-context.xml) в папке / src / main / resources.

У меня есть файлы свойств (config-e05.properties) в папке src / main / filters

И у меня POM настроен следующим образом:

<!-- environment profiles -->
<profiles>
 <profile>
  <id>e04</id>
  <properties>
   <targetenv>e04</targetenv>
  </properties>
 </profile>
 <profile>
  <id>e05</id>
  <properties>
   <targetenv>e05</targetenv>
  </properties>
 </profile>
</profiles>

<!-- build settings (filtering) -->
<build>
 <filters>
  <filter>src/main/filters/config-${targetenv}.properties</filter>
 </filters>
 <resources>
  <resource>
   <targetPath>WEB-INF</targetPath>
   <filtering>true</filtering>
   <directory>src/main/resources</directory>
  </resource>
 </resources>
</build>

Это приведет к правильной установке mvn, но когда я открываю выходной файл войны, я ожидал, что файл xmlgateway-context.xml будет в каталоге / WEB-INF, но в итоге он окажется в папке / WEB-INF / classes / WEB -ИНФ.

Как мне поместить этот файл в нужное место?

В качестве альтернативы, могу ли я поместить контекст приложения в другое место и указать там ссылку на него.


person Xetius    schedule 23.11.2009    source источник
comment
Я добавил тег maven-2, думаю, вы не против.   -  person Bozho    schedule 23.11.2009


Ответы (4)


<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.0.2</version>
        <configuration>
            <webResources>
                <resource>
                    <directory>${basedir}/src/main/webapp/WEB-INF</directory>
                    <filtering>true</filtering>
                    <targetPath>WEB-INF</targetPath>
                    <includes>
                        <include>**/xmlgateway-context.xml</include>
                     </includes>
                </resource>
            </webResources>
        </configuration>
    </plugin>
</plugins>

Добавьте это в свой pom.xml. РЕДАКТИРОВАТЬ: Просто чтобы объяснить, что делает вышеуказанная conf. После добавления этого mvn будет фильтровать файлы в src/main/webapp/WEB-INF и, в частности, фильтровать включенные файлы xmlgateway-context.xml, а после фильтрации он будет помещать файлы в папку WEB-INF (это то, что говорит тег target).

Обновите, если что-то не понятно.

person peakit    schedule 23.11.2009
comment
Просто хочу добавить, что версия 2.4, похоже, не работает с этой конфигурацией, самая последняя версия, работающая с этим параметром, которую я обнаружил, была 2.3, ура. - person tomasz_kusmierczyk; 25.08.2013
comment
Чем это отличается от простой настройки каталога src/main/webapp как каталога отфильтрованных ресурсов, как и любого другого? Какая польза от того, чтобы связать его с конфигурацией maven-war-plugin? - person Garret Wilson; 15.12.2016

вам следует настроить фильтрацию с помощью плагина maven war: checkout эти примеры.

person dfa    schedule 23.11.2009
comment
Я бы тоже принял это, если бы мог благодаря ссылкам, но @peakit выигрывает из-за лени для меня. - person Xetius; 23.11.2009

Если для параметра filteringDeploymentDescriptors установлено значение true

     <build>
        <finalName>web-project-name</finalName>
        <filters>
            <filter>src/main/resources/app.properties</filter>
        </filters>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerArguments>
                        <endorseddirs>${endorsed.dir}</endorseddirs>
                    </compilerArguments>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
                </configuration>
            </plugin>           
        </plugins>
    </build>
person Igor Vuković    schedule 10.01.2017

Поместите файл xmlgateway-context.xml в src / main / webapp / WEB-INF и настройте следующим образом:

<build>
    <filters>
        <filter>src/main/filters/config-${targetenv}.properties</filter>
    </filters>
    <resources>
        <resource>
                <filtering>true</filtering>
                <directory>src/main/webapp/WEB-INF</directory>
        </resource>
    </resources>
</build>
person EJB    schedule 23.11.2009