web-dev-qa-db-fra.com

Accéder aux propriétés maven définies dans le pom

Comment accéder aux propriétés maven définies dans le pom dans un projet maven normal et dans un projet de plug-in maven?

70
David Dai

Utilisez le properties-maven-plugin pour écrire un pom properties dans un fichier lors de la compilation, puis lisez-le au moment de l'exécution.

Dans votre pom.xml :

<properties>
     <name>${project.name}</name>
     <version>${project.version}</version>
     <foo>bar</foo>
</properties>

<build>
    <plugins>
        <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}/my.properties</outputFile>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Et puis dans . Java :

Java.io.InputStream is = this.getClass().getResourceAsStream("my.properties");
Java.util.Properties p = new Properties();
p.load(is);
String name = p.getProperty("name");
String version = p.getProperty("version");
String foo = p.getProperty("foo");
66
Leif Gruenwoldt

Configurez un variable système de Maven et dans Java, utilisez appel suivant

System.getProperty("Key");
20
Santosh

Maven a déjà une solution pour faire ce que vous voulez:

Obtenir MavenProject à partir du POM.xml - analyseur de pom?

d'ailleurs: premier coup à google;)

Model model = null;
FileReader reader = null;
MavenXpp3Reader mavenreader = new MavenXpp3Reader();

try {
     reader = new FileReader(pomfile); // <-- pomfile is your pom.xml
     model = mavenreader.read(reader);
     model.setPomFile(pomfile);
}catch(Exception ex){
     // do something better here
     ex.printStackTrace()
}

MavenProject project = new MavenProject(model);
project.getProperties() // <-- thats what you need
6
SWoeste

Cela peut être fait avec les propriétés standard Java en combinaison avec le maven-resource-plugin avec le filtrage activé sur les propriétés.

Pour plus d'informations, voir http://maven.Apache.org/plugins/maven-resources-plugin/examples/filter.html

Cela fonctionnera pour le projet standard maven comme pour les projets de plugin

6
Mark Bakker