2015-08-03 15 views
18

In pom.xml ho definito:Maven filtraggio risorsa per singolo file

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.6</version> 
    <configuration> 
     <nonFilteredFileExtensions> 
      <nonFilteredFileExtension>xml</nonFilteredFileExtension> 
     </nonFilteredFileExtensions> 
     <encoding>UTF-8</encoding> 
    </configuration> 
</plugin> 

e

<resources> 
    <resource> 
     <filtering>true</filtering> 
     <directory>src/main/resources</directory> 
    </resource> 
</resources> 

Ora il problema è di tutti i file XML non vengono filtrati. C'è un modo possibile per filtrare un singolo file xml?

risposta

14

Non so il motivo per cui la soluzione di Gabor non ha funzionato, ma sono riuscito a risolvere in questo modo:

In primo luogo ho rimosso nonFilteredFileExtension tag:

<nonFilteredFileExtension>xml</nonFilteredFileExtension> 

Quindi modificato le mie risorse in questo modo:

<resource> 
    <directory>src/main/resources</directory> 
    <filtering>true</filtering> 
    <includes> 
     <include>**/myxml.xml</include> 
    </includes> 
</resource> 

<resource> 
    <directory>src/main/resources</directory> 
    <filtering>false</filtering> 
    <includes> 
     <include>**/*.xml</include> 
    </includes> 
</resource> 

Ora il mio singolo file xml viene filtrato e l'altro non viene lasciato intatto dal filtro.

11

Per il tag di risorsa che è possibile utilizzare include ed esclude. Basta definire semplicemente una maschera, che si adatta solo al tuo singolo file. Vedere http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

Esempio:

<project> 
    ... 
    <build> 
    ... 
    <resources> 
     <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     <includes> 
      <include>**/yoursinglefile.xml</include> 
     </includes> 
     </resource> 
     ... 
    </resources> 
    ... 
    </build> 
    ... 
</project> 
+0

Sembra che il file non è ancora filtrata. Posso ancora vedere $ {...} valori nel file xml che si trova nella cartella di destinazione. –

3

Qualcosa di simile funziona bene per me:

<resources> 
     <resource> 
      <directory>src/test/resources</directory> 
      <filtering>false</filtering> 
     </resource> 
     <resource> 
      <directory>src/test/resources</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>my_file.xml</include> 
      </includes> 
     </resource> 
    </resources> 

Questa documentazione mi aiuta: Apache Maven - Filtering

Problemi correlati