Správa konfigurací se dá v Mavenu řešit různými způsoby (řekl bych, že dost často se to dělá přes maven-antrun-plugin). Já jsem aktuálně použil filtering. Zadání je jednoduché - mám konfigurační properties soubor a potřebuju v něm mít jiné hodnoty pro různá prostředí, např. DEV a TEST.
Filtrování resources
Filtrování v Mavenu funguje následovně. Do standardního layoutu přidám adresář src/main/filters a v něm jsou filtrovací properties soubory s vkládanými hodnotami (je potřeba použít "plain" properties - s XML properties to v Mavenu nefunguje). V adresáři src/main/resources pak mám "normální" properties soubory s placeholdery pro vložení hodnot. Placeholder má formát ${property.klíč}.
Layout projektu |
my.filter.value=worldObsah souboru hello.txt:
Hello, ${my.filter.value}!Aby došlo k filtrování, je potřeba je mít v pom.xml zapnuté a mít uvedenou cestu k filtrovacímu souboru:
<build> <filters> <filter> src/main/filters/default.properties </filter> </filters> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>Pokud teď pustíme zpracování resources příkazem:
- mvn resources:resources
Hello, world!
Buildovací profily
V předešlé sekci jsme do properties souboru vložili definovanou hodnotu (můžeme ji nazývat defaultní). Pro vložení jiné hodnoty je potřeba vytvořit profil v souboru pom.xml:
<profiles> <profile> <id>profile-1</id> <build> <filters> <filter> src/main/filters/profile-1.properties </filter> </filters> </build> </profile> </profiles>Profil zapneme přepínačem -P <profil>:
- mvn resources:resources -P profile-1
my.filter.value=profile-1 worldnajdeme v souboru target/classes/hello.txt nově vloženou hodnotu:
Hello, profile-1 world!
Filtrování webResources
Výše uvedený postup funguje pouze nad adresářem src/main/resources. Pokud chceme totéž provést v adresáři s web resources (WEB-INF atd.), musíme nakonfigurovat obdobným způsobem maven-war-plugin:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.2</version> <configuration> <webResources> <resource> <directory> src/main/webapp/WEB-INF </directory> <targetPath>WEB-INF</targetPath> <filtering>true</filtering> <includes> <include>web.xml</include> </includes> </resource> </webResources> </configuration> </plugin> </plugins> <filters> <filter> src/main/filters/default.properties </filter> </filters> </build>Pro úplnost ještě doplním layout projektu:
Layout web projektu |
Žádné komentáře:
Okomentovat
Poznámka: Komentáře mohou přidávat pouze členové tohoto blogu.