【问题标题】:POM XML property on reading in Java becomes null在 Java 中读取时的 POM XML 属性变为 null
【发布时间】:2017-10-28 01:42:31
【问题描述】:

我在 Netbeans 中设置了一个基本的 maven Java 项目。我在POM.xml 文件中创建了一个新属性,并尝试在我的代码中读取它。但是,我不断得到一个空值而不是值。我做错了什么?

POM.XML:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.test</groupId>
        <artifactId>Test</artifactId>
        <version>1.0</version>
    </parent>
    <artifactId>Test</artifactId>
    <packaging>jar</packaging>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <system>ABC</system>
    </properties>
</project>

代码:

package com.test.Test;
public class Test {
    public static void main(String[] args) {
        System.out.println("Creating connection to " + System.getProperty("system") + "...");
    }
}

【问题讨论】:

  • 因为它们是 maven 属性,而不是系统属性。它们仅在 maven 构建期间有效,在程序运行时无效。
  • 为什么需要从 Maven 属性中读取它们?应该在测试期间还是在应用程序运行期间使用它们?

标签: java maven


【解决方案1】:

我认为你能做到这一点的唯一方法是在项目启动期间使用以下命令来处理这些属性:

-Dsystem=...

【讨论】:

  • 有没有办法通过读取 maven 属性来做到这一点?
  • 你知道,我并不真正意识到这样的机会,我会问另一个问题 - 为什么你需要以这种确切的方式这样做?因此,如果您需要在应用程序中使用任何属性,那么将它们移动到某个属性文件中以进行直接访问是有意义的。 Maven 属性仅用于一些构建时间信息。如果您为此提供一些真实的用例,我们可能会找到更好的方法来处理它。
  • 是的,我也想在我的运行时使用构建属性。有这种可能吗?
  • 我建议您检查另一种方法 - 将您的属性移动到属性文件,然后使用属性文件使用这种方法在 maven 中加载属性 - stackoverflow.com/questions/12619446/…
【解决方案2】:

与 Maven 无关。

您应该将其设置为 JVM 参数。然后您就可以将它们读取为System.getProperty()

例如,在 Eclipse 中,您可以在此处的菜单中找到它:

Run --> Run Configurations... --> Arguments --> VM arguments --> 在那里添加你的属性(不要忘记应用你的更改):

-Dsystem=ABC

将导致System.getProperty("system") 返回ABC

【讨论】:

  • 有没有办法通过读取 maven 属性来做到这一点?
  • 我也想在我的运行时使用构建属性。有这种可能吗?
  • @JackSlayer94 对于某些人来说,是的。究竟是什么属性?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 2020-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
相关资源
最近更新 更多