gpt4 book ai didi

java - Eclipse IDE 中未读取 SystemPropertyVariables

转载 作者:行者123 更新时间:2023-11-30 05:56:00 25 4
gpt4 key购买 nike

在 ma Maven 项目中,我的 pom.xml 中有类似下面的内容

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<systemPropertyVariables>
<environment>DEV</environment>
</systemPropertyVariables>
</configuration>
</plugin>

当然,我在 Java 代码中使用了这个属性。但是我的问题是,如果我在 Eclipse 中运行测试,则不会从 pom 文件中读取此属性,最终我的“环境”属性保持为空。

如果我从控制台运行测试并添加“-Denvironment=DEV”,那么就可以了。

我的问题是如何配置 Eclipse,以便它在我从控制台运行它时看到我的“环境”属性?

有人可以帮忙吗?我自己找不到解决方案...

谢谢

最佳答案

这是对 Maven 工作方式的常见误解。

Maven 的核心定义了构建生命周期,本质上是一个状态机,告诉它如何过渡到给定阶段。例如,如果您运行:

mvn test-compile

Maven知道它首先需要经过一系列步骤(状态)才能执行test-compile 。考虑到 POM 的编写方式,这些状态中的每一个都可能有或没有 Maven 将执行的附加插件。所以本质上,Maven 本身并不做任何资源复制、编译、测试、打包等工作。所有这些任务都委托(delegate)给插件。

当您将 Maven 项目导入 Eclipse 时,由于各种原因,它将提供自己的插件映射。其中一些(例如编译)对于 IDE 来说是有意义的,它将使用自己的插件来完成这项工作。不属于 Eclipse 通常执行的其他阶段(例如打包)将没有映射,因此没有要执行的插件。

运行 JUnit 测试并不是 Eclipse 在构建过程中通常执行的操作,因此这就是您手动运行 JUnit 测试的原因(右键单击测试类> 运行为 > JUnit 测试)。 Eclipse 简单地忽略 surefire插件,因为它使用自己的内部 JUnit 运行程序来运行测试,因此它不会从 surefire 获取配置插件。

我毫不怀疑这可以在 Eclipse 中工作,但在撰写本文时,它根本无法在 Eclipse 中工作。您尝试过 IntelliJ 吗?

但是,由于有人可能会认为 Eclipse 始终处于“DEV”模式,因此一种合适的解决方法是在 Eclipse 中静态设置 JRE 上的系统属性吗?

像这样:

Window > Preferences > Java > Installed JREs > select your JRE > Edit... > Default VM arguments: -DDEV

关于java - Eclipse IDE 中未读取 SystemPropertyVariables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53185804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com