Lecture du fichier de propriétés à partir du fichier Maven POM
J'ai le fichier Maven POM avec une certaine configuration et dans la section plugins, j'ai le plugin Maven tomcat avec une certaine configuration comme ceci:
<configuration>
<url>http://localhost:8080/manager/html</url>
<server>tomcat</server>
</configuration>
Je voudrais exporter le paramètre d'url vers un fichier de propriétés par exemple tomcat.propriétés avec cette clé:
url=http://localhost:8080/manager/html
Et comment puis-je lire cette clé dans mon fichier POM?
3 réponses
Maven vous permet de définir des propriétés dans le POM du projet. Vous pouvez le faire en utilisant un fichier POM similaire à ce qui suit:
<project>
...
<properties>
<server.url>http://localhost:8080/manager/html</server.url>
</properties>
...
<build>
<plugins>
<plugin>
...
<configuration>
<url>${server.url}</url>
<server>tomcat</server>
</configuration>
...
</plugin>
</plugins>
</build>
</project>
Vous pouvez éviter de spécifier la propriété dans la balise properties
et passer la valeur de la ligne de commande comme suit:
mvn -Dserver.url=http://localhost:8080/manager/html some_maven_goal
Maintenant, si vous ne voulez pas les Spécifier à partir de la ligne de commande et si vous avez besoin d'isoler davantage ces propriétés du projet POM, dans un fichier de propriétés, alors vous devrez utiliser le plugin Properties Maven , et exécuter c'est l'objectif read-project-properties
dans la phase d'initialisation du cycle de vie Maven. L'exemple de la page du plugin est reproduit ici:
<project>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<!-- Associate the read-project-properties goal with the initialize phase, to read the properties file. -->
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>etc/config/dev.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Exemple de travail complet disponible à l'adresse: http://hg.defun.travail/exp/fichier/tip/maven/propriétés
Voici une partie essentielle de pom.xml :
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
</execution>
</executions>
<configuration>
<files>
<file>dev.properties</file>
</files>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<echo>project.build.sourceEncoding is "${project.build.sourceEncoding}"</echo>
<echo>foo is "${foo}"</echo>
<echo>with-spaces is "${with-spaces}"</echo>
<echo>existent.property is "${existent.property}"</echo>
<echo>nonexistent.property is "${nonexistent.property}"</echo>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
Comme vous pouvez le voir propriétés-maven-plugin encore à alpha étape, c'est pourquoi je déteste Maven comme outils de construction...
Il n'est pas réellement possible de charger des propriétés à partir d'un fichier en utilisant les instructions de la réponse acceptée car ces propriétés ne sont pas disponibles dans le fichier pom bien qu'elles puissent être utilisées pour le filtrage. Exemple de compteur Minimal:
Dans pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<!-- Associate the read-project-properties goal with the initialize phase, to read the properties file. -->
<execution>
<!-- Apart from this test, the phase must be initialize -->
<phase>validate</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>dev.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<echo>Displaying value of properties</echo>
<echo>[foo] ${foo}</echo>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Ayant dans dev.properties
:
foo=bar
Ensuite, exécutez la commande mvn validate
produit la sortie:
[echo] Displaying value of properties
[echo] [foo] bar