Contents

Java访问Maven属性

1. 概述

在这个简短的教程中,我们将了解如何在Java 应用程序中使用 Maven 的pom.xml中定义的变量。

2. 插件配置

在整个示例中,我们将使用Maven 属性插件

该插件将绑定到generate-resources阶段,并创建一个包含在我们的pom.xml中定义的变量的文件。然后我们可以在运行时读取该文件以获取值。

让我们首先将插件包含在我们的项目中:

<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}/properties-from-pom.properties</outputFile> 
            </configuration> 
        </execution> 
    </executions> 
</plugin>

接下来,我们将继续为我们的变量提供一个值。此外,由于我们在pom.xml中定义它们,我们也可以使用Maven 占位符

<properties> 
    <name>${project.name}</name> 
    <my.awesome.property>property-from-pom</my.awesome.property>
</properties>

3. 读取属性

现在是时候从配置中访问我们的属性了。让我们创建一个简单的实用程序类来从类路径上的文件中读取属性:

public class PropertiesReader {
    private Properties properties;
    public PropertiesReader(String propertyFileName) throws IOException {
        InputStream is = getClass().getClassLoader()
            .getResourceAsStream(propertyFileName);
        this.properties = new Properties();
        this.properties.load(is);
    }
    public String getProperty(String propertyName) {
        return this.properties.getProperty(propertyName);
    }
}

接下来,我们简单地编写一个小测试用例来读取我们的值:

PropertiesReader reader = new PropertiesReader("properties-from-pom.properties");
String property = reader.getProperty("my.awesome.property");
Assert.assertEquals("property-from-pom", property);