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

时间:2014-10-16 12:23:18

标签: java maven

我在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

4 个答案:

答案 0 :(得分:1)

所以您有一个名为

的元素
  properties.getdownload-webapp.version

制作一个名为

的文件
  src/main/resources/project.properties

...在您的Maven目录中,并添加以下行:

  version=${properties.getdownload-webapp.version}

“。”内部标签的名称可能会在此处引起问题。如果此方法不起作用,请尝试将其删除以查看是否有帮助。 (将其更改为getdownload-webapp-version之类。)


请注意,您还可以添加标志,例如

  debug=false

...到此文件。


然后,在您的源代码(MyClassName.java)中,添加一个类似

的代码块
  Properties props = new Properties();
  String version = "unknown";

  try ( props.load(MyClassName.class.getClassLoader()
             .getResourceAsStream("project.properties"))) {

    version = props.getProperty("version");

  } catch (IOException ex) {
    // exception handling here
  }

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

答案 1 :(得分:0)

我假设你想在代码中找到它来检查一些正确的东西?您可以使用maven中的过滤,它将在源代码中注入值,类似于过滤选项 http://mojo.codehaus.org/templating-maven-plugin/

答案 2 :(得分:0)

Maven Resource Plugin

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

该插件是 Maven Super Pom 的一部分,并在 Jar Default Lifecyle process-resources阶段执行。您唯一要做的就是激活filtering

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

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

答案 3 :(得分:-1)

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

项目的类型为MavenProject