Java 在Eclipse IDE中未读取SystemPropertyVariable
在MaMaven项目中,pom.xml中有如下内容Java 在Eclipse IDE中未读取SystemPropertyVariable,java,eclipse,maven,junit,Java,Eclipse,Maven,Junit,在MaMaven项目中,pom.xml中有如下内容 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.19.1</version> <configuration> <systemProp
<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>
org.apache.maven.plugins
maven surefire插件
2.19.1
发展
当然,我在Java代码中使用了这个属性。
然而,我的问题是,如果我在Eclipse中运行测试,那么这个属性不会从pom文件中读取,最后我的“environment”属性保持为空
如果我从控制台添加'-Denvironment=DEV'运行测试,那么就可以了
我的问题是如何配置Eclipse,以便在我从控制台运行它时,它可以看到我的“环境”属性
有人能帮忙吗?
我自己找不到解决办法
谢谢这是对Maven工作原理的常见误解 Maven的核心定义了一个构建生命周期,本质上是一个告诉它如何过渡到给定阶段的状态机。例如,如果您运行:
mvn test-compile
Maven知道它首先需要经历一系列步骤(状态),然后才能执行test compile
。考虑到POM的编写方式,这些状态中的每一个都可能有或可能没有Maven将执行的插件。所以本质上,Maven本身不做任何资源复制、编译、测试、打包等工作。所有这些任务都委托给插件
当您将Maven项目导入Eclipse时,出于各种原因,它将提供自己的插件映射。其中一些(比如编译)对于IDE来说是有意义的,它将使用自己的插件来完成这项工作。Eclipse通常不做的其他阶段(如打包)将没有映射,因此没有插件可执行
运行JUnit测试并不是Eclipse通常作为构建的一部分所做的,所以这就是为什么要手动运行JUnit测试(右键单击test class>RunAs>JUnit test)。Eclipse只是忽略了surefire
插件,因为它使用自己的内部JUnit runner来运行测试,因此它不会从surefire
插件获取配置
我毫不怀疑这可以在Eclipse中工作,但在撰写本文时,它根本不起作用。你有没有试过IntelliJ
然而,既然有人认为Eclipse总是处于“DEV”模式,那么合适的解决方法是在Eclipse中静态地设置JRE上的系统属性吗
像这样:
窗口>首选项>Java>已安装的JRE>选择您的JRE>
编辑…>默认VM参数:-DDEV
插件似乎是插件的一个内部标签。这意味着这些配置只有在您从jar文件开始运行程序时才有用,而不是从Eclipse。@htpvl,但它可以在IntelliJ IDE中工作:(是的,它可以工作,解决方法对我来说也可以。谢谢:)