44 votes

Filtrer les fichiers Maven dans WEB-INF

J'essaie d'ajouter un certain filtrage au fichier de contexte de l'application, qui se trouve dans le répertoire WEB-INF.

J'ai le fichier qui doit être filtré (xmlgateway-context.xml) dans le dossier /src/main/resources.

Les fichiers de propriétés (config-e05.properties) se trouvent dans le dossier src/main/filters.

Et j'ai configuré le POM 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>

L'installation mvn se fait correctement, mais lorsque j'ouvre le fichier war de sortie, je m'attendais à ce que le fichier xmlgateway-context.xml soit dans le répertoire /WEB-INF, mais il se trouve dans le répertoire /WEB-INF/classes/WEB-INF.

Comment puis-je mettre ce fichier au bon endroit.

Sinon, puis-je placer le contexte de l'application à un autre endroit et l'y référencer ?

90voto

peakit Points 5646
<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 ce qui précède à votre pom.xml. EDITAR: Juste pour expliquer ce que la conf ci-dessus fait. Avec cet ajout, mvn va filtrer les fichiers sous le nom de src/main/webapp/WEB-INF et en particulier filtrer les fichiers inclus xmlgateway-context.xml et après le filtrage, il va pousser les fichiers en WEB-INF (c'est ce que le target dit).

Mettez à jour si quelque chose n'est pas clair.

4voto

dfa Points 54490

Vous devez configurer le filtrage via l'option plugin de guerre maven : caisse ces exemples .

0voto

Igor Vuković Points 410

Avec filteringDeploymentDescriptors réglé sur vrai

     <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>

-2voto

EJB Points 1192

Mettez le fichier xmlgateway-context.xml dans src/main/webapp/WEB-INF et configurez 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>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X