2010-02-25 15 views
22

Nella mia applicazione ho un file delle proprietà denominato ApplicationResources.properties con una proprietà che cambia in base all'ambiente. Diciamo che la proprietà è:Maven Modifica un valore in un file basato sul profilo

 resources.location=/home/username/resources 

e questo valore è diverso quando l'applicazione viene eseguita durante lo sviluppo e quando l'applicazione va in produzione.

So che posso utilizzare diversi profili in Maven per eseguire compiti di compilazione diversi in ambienti diversi. Quello che voglio fare è in qualche modo sostituire il valore di resources.location nel file delle proprietà basato sul profilo Maven in uso. È possibile?

risposta

46

Quello che voglio fare è sostituire in qualche modo il valore di resources.location nel file delle proprietà basato sul profilo Maven in uso. È possibile?

Sì, lo è. Attiva il filtraggio delle risorse e definisci il valore da sostituire in ogni profilo.

Nella tua ApplicationResources.properties, dichiarare un gettone per sostituire in questo modo:

resources.location=${your.location} 

Nel vostro POM, aggiungere un tag <filtering> per l'appropriato <resource> e impostarlo su true in questo modo:

<project> 
    ... 
    <build> 
    ... 
    <resources> 
     <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     </resource> 
     ... 
    </resources> 
    ... 
    </build> 
    ... 
</project> 

Quindi aggiungere un elemento <your.location> all'interno dell'elemento <properties> all'interno di ciascun profilo:

<project> 
    ... 
    <profiles> 
    <profile> 
     <id>my-profile</id> 
     ... 
     <properties> 
     <your.location>/home/username/resources</your.location> 
     </properties> 
     ... 
    </profile> 
    ... 
    </profiles> 
</project> 

Ulteriori informazioni sul filtraggio delle risorse here e here.

+1

@Pascal Thivent Grazie. Questa è una spiegazione eccellente –

+0

+1 Secondo quello: D – ant

Problemi correlati