Filtraggio Maven file in WEB-INF
Domanda
Sto cercando di aggiungere un po 'di filtraggio al file contesto di applicazione, che si trova nella directory WEB-INF.
Ho il file che deve essere filtrata (xmlgateway-context.xml) nel main / risorse cartella / src /.
Ho le proprietà dei file (config-e05.properties) nella cartella src / main / filtri
E ho la POM impostato come segue:
<!-- 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>
Questo MVN installato correttamente, ma quando ho aperto il file di output di guerra, mi aspettavo il file xmlgateway-context.xml di essere nella directory / WEB-INF, ma finisce nella cartella / WEB-INF / classi / WEB-INF.
Come posso ottenere questo file nel posto giusto.
In alternativa, posso mettere il contesto dell'applicazione in una posizione diversa e l'ho fatto riferimento lì.
Soluzione
<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>
Aggiungere quanto sopra per il vostro pom.xml.
Modifica Solo per spiegare ciò che quanto sopra conf sta facendo. Con questa aggiunta, mvn sta per filtrare i file sotto src/main/webapp/WEB-INF
e, in particolare, il filtro dei file inclusi xmlgateway-context.xml
e dopo il filtraggio che sta per spingere i file nella cartella WEB-INF
(questo è ciò che il tag target
sta dicendo).
Aggiorna se qualcosa non è chiaro.
Altri suggerimenti
si dovrebbe configurare il filtro attraverso il Maven plug guerra : checkout < a href = "http://maven.apache.org/plugins/maven-war-plugin/examples/adding-filtering-webresources.html" rel = "nofollow noreferrer"> questi esempi .
Con filteringDeploymentDescriptors impostate su 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>
Inserire il file xmlgateway-context.xml in src / main / webapp / WEB-INF e configurare in questo modo:
<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>