Filtrage des fichiers Maven dans WEB-INF
Question
Je suis en train d'ajouter un certain filtrage dans le fichier de contexte d'application, qui se trouve dans le répertoire WEB-INF.
Je le fichier qui est à filtrer (xmlgateway-context.xml) dans le dossier / src / main / resources.
Je les fichiers propriétés (config-e05.properties) dans le dossier src / main / filtres
Et je le POM mis en place comme suit:
<!-- 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>
Cela MVN installer correctement, mais quand j'ouvre le fichier de guerre de sortie, j'attendais le fichier xmlgateway-context.xml être dans le répertoire / WEB-INF, mais il finit dans le dossier / WEB-INF / cours / WEB-INF.
Comment puis-je obtenir ce fichier dans le bon endroit.
Sinon, je peux mettre le contexte d'application dans un endroit différent et ai là référencé.
La solution
<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>
Ajoutez ci-dessus à votre pom.xml.
EDIT: Juste pour expliquer ce que le fait ci-dessus conf. Avec ce ajouté, mvn va filtrer les fichiers sous src/main/webapp/WEB-INF
et filtre particulier les fichiers inclus xmlgateway-context.xml
et après filtrage, il va pousser les fichiers dans le dossier WEB-INF
(c'est ce que la balise target
dit).
Mise à jour si quelque chose n'est pas clair.
Autres conseils
vous devez configurer le filtrage via le Maven plugin guerre : votre commande < a href = "http://maven.apache.org/plugins/maven-war-plugin/examples/adding-filtering-webresources.html" rel = "nofollow noreferrer"> ces exemples .
filteringDeploymentDescriptors la valeur 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>
Placez le fichier xmlgateway-context.xml dans src / main / webapp / WEB-INF et configurer comme ceci:
<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>