为了账号安全,请及时绑定邮箱和手机立即绑定

Eclipse IDE 中未读取 SystemPropertyVariable

Eclipse IDE 中未读取 SystemPropertyVariable

holdtom 2022-01-06 17:55:03
在 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 以便在我从控制台运行它时看到我的“环境”属性?有人可以帮忙吗?我自己找不到解决方案...
查看完整描述

1 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

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

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

mvn test-compile

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

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

运行 JUnit 测试并不是 Eclipse 通常作为构建的一部分所做的,所以这就是您手动运行 JUnit 测试的原因(右键单击测试类> 运行方式 > JUnit 测试)。Eclipse 只是忽略该surefire插件,因为它使用自己的内部 JUnit 运行器来运行测试,因此它不会从surefire插件中获取配置。

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

但是,由于有人可能会争辩说 Eclipse 始终处于“DEV”模式,那么合适的解决方法是在 Eclipse 中的 JRE 上静态设置系统属性吗?

像这样:

Window > Preferences > Java > Installed JREs >选择你的 JRE > Edit... > Default VM arguments: -DDEV


查看完整回答
反对 回复 2022-01-06
  • 1 回答
  • 0 关注
  • 295 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信