繁体   English   中英

如何从pom.xml获取属性值?

[英]how to get property value from pom.xml?

我在pom.xml中添加了一个节点:

<properties>
        <getdownload-webapp.version>1.5</getdownload-webapp.version>
</properties>

我怎么能在代码中得到这个1.5值?

String version = System.getProperty("getdownload-webapp.version"); // output version = null

这段代码在运行时给了我null(

ps:此项目中没有settings.xml

所以你有一个这样的财产。

<properties>
    <getdownload-webapp.version>1.5</getdownload-webapp.version>
</properties>

在您的Maven项目中创建一个文件,如下所示。

  src/main/resources/project.properties

如果仅用于测试,则如下所示。

  src/test/resources/project.properties

将此行添加到新文件中。 请注意,您不应以“ properties”作为前缀(例如,不要写“ properties.getdownload-webapp.version”)。

  version=${getdownload-webapp.version}

请注意,您也可以在文件中添加这样的标志。

  debug=false

如果尚未完成,则必须为项目启用Maven筛选。 此功能将查找项目文件中的占位符,以将其替换为pom中的值。 为了继续,您需要在pom.xml文件的<build>标记内添加这些行。 这是使用src / main的方法:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    ...

这是src / test的操作方法:

<build>
    <testResources>
        <testResource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
        </testResource>
    </testResources>
    ...

最后,在您的源代码( MyClassName.java )中,添加一个代码块,例如

  Properties props = new Properties();
  props.load(MyClassName.class.getClassLoader().getResourceAsStream("project.properties"));
  String version = props.getProperty("version");

您可以在project.properties文件中添加任意数量的变量,并使用此方法加载每个变量。

我假设您想在代码中获取它以检查是否正确? 您可以使用来自maven的过滤,该过滤将在源代码中注入值,类似于过滤选项http://mojo.codehaus.org/templating-maven-plugin/

Maven资源插件提供了主要负责将Maven属性转移到Java应用程序的机制。

该插件是Maven Super Pom的一部分,在Jar Default Lifecyleprocess-resources阶段执行。 您唯一要做的就是主动过滤

这会将src/main/resources中任何文件中的所有占位符(例如${my.property}替换${my.property} pom中的相应属性,例如<property><my.property>test</my.property></property>

如何使此属性对Java应用程序可用取决于您-从类路径中读取它就可以了。

String version = project.getProperties().getProperty("getdownload-webapp.version");

项目是MavenProject类型的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM