Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从pom.xml获取属性值?_Java_Maven - Fatal编程技术网

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

Java 如何从pom.xml获取属性值?,java,maven,Java,Maven,我在pom.xml中添加了一个节点: <properties> <getdownload-webapp.version>1.5</getdownload-webapp.version> </properties> 此代码在运行时为null( ps:此项目中没有settings.xml我假设您希望在代码中使用它来检查是否正确?您可以使用maven中的筛选,它将在源代码中注入值,类似于筛选选项 其中project的类型为MavenP

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

<properties>
        <getdownload-webapp.version>1.5</getdownload-webapp.version>
</properties>
此代码在运行时为null(


ps:此项目中没有settings.xml

我假设您希望在代码中使用它来检查是否正确?您可以使用maven中的筛选,它将在源代码中注入值,类似于筛选选项


其中project的类型为MavenProject

,因此您有这样一个属性

<properties>
    <getdownload-webapp.version>1.5</getdownload-webapp.version>
</properties>
如果仅用于测试,则如下所示

  src/test/resources/project.properties
在新文件中添加这一行。请注意,您不应以“属性”作为前缀(例如,不要写“properties.getdownload webapp.version”)


请注意,您还可以向文件中添加类似的标志

  debug=false

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

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

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

主要负责将Maven属性传输到Java应用程序的机制由

该插件是Maven Super Pom的一部分,在Jar默认生命周期的
过程资源
阶段执行

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


如何使该属性可供Java应用程序使用取决于您-从类路径读取该属性将起作用。

或者,maven resources插件可以通过maven property筛选资源。我无法调用filter,所有逻辑仅在Java方法中-也许有一种使用资源的方法-但如何在运行时读取它们的值来自上面链接的e模板插件可以为您修改java文件。您可以执行类似字符串版本=${getdownload webapp.version}然后在你的逻辑中使用版本变量。我不仅需要版本,还需要一些其他字符串值。购买你建议的插件的预发布方式如果你将pom打包到META-INF,maven通常会自动完成,你应该能够从那里读取它。这不是JVM属性,这与M中的变量类似aven:我可以将属性更改为资源或变量,但如何从java代码中访问它们呢?请参阅这里:[我已经完成了jetty的操作,并且再次得到了空结果
  src/test/resources/project.properties
  version=${getdownload-webapp.version}
  debug=false
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    ...
<build>
    <testResources>
        <testResource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
        </testResource>
    </testResources>
    ...
  Properties props = new Properties();
  props.load(MyClassName.class.getClassLoader().getResourceAsStream("project.properties"));
  String version = props.getProperty("version");