Доступ к свойствам maven, определенным в pom

Как мне получить доступ к свойствам maven, определенным в pom в обычном проекте maven, и в проекте плагина maven?

Ответ 1

Используйте properties-maven-plugin, чтобы записать конкретный pom properties в файл во время компиляции, а затем прочитать этот файл во время выполнения.

В вашем 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>

А затем в .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");

Ответ 3

У Maven уже есть решение сделать то, что вы хотите:

Получить MavenProject только из POM.xml - pom parser?

btw: первый раз попал в google search;)

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

Ответ 4

Это можно сделать с помощью стандартных свойств Java в сочетании с maven-resource-plugin с включенной фильтрацией свойств.

Для получения дополнительной информации см. Http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html.

Это будет работать для стандартного проекта Maven, как для проектов плагинов

Ответ 5

Вы можете проанализировать файл pom с помощью JDOM (http://www.jdom.org/).