2009-11-23 4 views
42

Ich versuche, eine Filterung der Anwendungskontextdatei hinzuzufügen, die sich im WEB-INF-Verzeichnis befindet.Filtern von Maven-Dateien in WEB-INF

Ich habe die Datei, die gefiltert werden soll (xmlgateway-context.xml) im Ordner/src/main/resources.

Ich habe die Eigenschaften von Dateien (config-e05.properties) im Ordner src/main/Filter

Und ich habe das POM up wie folgt festgelegt:

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

Dies wird MVN richtig installieren , aber wenn ich die Ausgabe-WAR-Datei öffne, erwartete ich, dass die Datei xmlgateway-context.xml sich im Verzeichnis/WEB-INF befindet, aber sie landet im Ordner/WEB-INF/classes/WEB-INF.

Wie kann ich diese Datei an den richtigen Ort bekommen.

Alternativ kann ich den Anwendungskontext auch an einem anderen Ort speichern und dort referenzieren lassen.

+0

fügte ich die maven- 2 Tag, ich denke, es macht Ihnen nichts aus. – Bozho

Antwort

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

Fügen Sie das oben genannte zu Ihrer pom.xml hinzu. EDIT: Nur um zu erklären, was das oben genannte conf tut. Mit diesem Zusatz wird mvn Dateien unter src/main/webapp/WEB-INF filtern und insbesondere die enthaltenen Dateien filtern xmlgateway-context.xml und nach der Filterung wird es die Dateien in WEB-INF Ordner schieben (das ist was das target Tag sagt).

Aktualisieren, wenn etwas nicht klar ist.

+0

Ausschneiden und Einfügen und funktioniert wie beschrieben. Ta sehr. – Xetius

+5

Nur eine Beobachtung hinzufügen, Version 2.4 scheint nicht mit dieser Konfiguration zu arbeiten, die neueste und mit dieser Einstellung arbeiten fand ich 2,3, Prost. –

+0

danke @tomasz_kusmierczyk für diese Beobachtung –

4

sollten Sie die Filterung über die maven war plugin konfigurieren: Kasse these examples.

+4

Ich hätte das auch akzeptiert, wenn ich dank Links, aber @peakit gewinnt wegen Fastenkalk für mich. – Xetius

-1

Legen Sie die Datei xmlgateway-context.xml in src/main/webapp/WEB-INF und wie folgt konfiguriert werden:

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

Mit filteringDeploymentDescriptors auf true gesetzt

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