Skip to content

Configuration de l'application

mekor-dev edited this page Sep 29, 2020 · 3 revisions

Pour ajouter des propriétés de configuration de l'application dépendant de l'environnement, j'utilise les profiles Maven et Properties Maven Plugin

Doc: https://www.mojohaus.org/properties-maven-plugin

Maven Profiles et propriétés

Pour renseigner une propriété pour un environnement spécifique, on utilise les profils:

<profile>
	<id>profileName</id>

	<properties>
		<property.name>value</property.name>
	</properties>
</profile>

On peut ensuite build projet en spécifiant un profil:

mvn clean compile package -PprofileName

Properties Maven Plugin

Ce plugin écrit, lors du build maven, les properties renseignées dans le pom.xml dans le fichier spécifié (ici app-config.properties).

<plugin>
	<groupId>org.codehaus.mojo</groupId>
	<artifactId>properties-maven-plugin</artifactId>
	<version>1.0.0</version>
	<executions>
		<execution>
			<phase>generate-resources</phase>
			<goals>
				<goal>write-project-properties</goal>
			</goals>
			<configuration>
				<outputFile>${project.build.outputDirectory}/app-config.properties</outputFile>
			</configuration>
		</execution>
	</executions>
</plugin>

Pour l'exemple de profil précédent, le plugin écrira dans le fichier :

property.name=value

AppConfig.java

La class AppConfig lis le fichier app-config.properties et stocke les propriétés en tant qu'attribut. Comme cette classe est ApplicationScoped, elle peut être accéder dans toute l'application.

@Inject
@InjectableResource(location = "app-config.properties")
private Properties configProps;

public void init(@Observes @Initialized(ApplicationScoped.class) Object init) {
	log.debug("Entering init()");

	// Setting properties
	property = configProps.getProperty("property.name");

	// Logging properties
	log.info("-------------------------------------------------");
	log.info("AppConfig controller has inited with following values:");
	log.info("Property: {}", property);
}
@Inject
private AppConfig appConfig;

public void getProperty(){
	return appConfig.getProperty();
}

Clone this wiki locally