猿问

Eclipse IDE 中未读取 SystemPropertyVariable

在 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 以便在我从控制台运行它时看到我的“环境”属性?


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


holdtom
浏览 296回答 1
1回答

慕斯709654

这是对 Maven 工作方式的常见误解。Maven 的核心定义了一个构建生命周期,本质上是一个状态机,告诉它如何转换到给定的阶段。例如,如果您运行:mvn&nbsp;test-compileMaven 知道它首先需要通过一系列步骤(状态)才能执行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&nbsp;> Edit... > Default VM arguments: -DDEV
随时随地看视频慕课网APP

相关分类

Java
我要回答