当前位置:  开发笔记 > 编程语言 > 正文

通过Maven命令行设置属性

如何解决《通过Maven命令行设置属性》经验,为你挑选了1个好方法。

我很困惑在使用Maven时通过命令行为某些单元测试设置属性的正确方法.有一些问题(如指定Maven的内存参数没有设置MAVEN_OPTS环境变量,有没有办法通过命令行传递JVM参数传递给Maven的?,如何设置JVM参数JUnit测试?)在这个问题上的那一抹但没有人能找到我想要的答案.

我想将属性设置java.util.logging.config.class为某个值,但我不想设置MAVEN_OPTS环境变量.

我可以使用属性在我的pom文件中配置surefire插件:

-Djava.util.logging.config.class=someClass

这样每次运行测试阶段时都会设置它.

但是,如果我从pom文件中删除该设置并将以下内容添加到命令行:

mvn package -DargLine="java.util.logging.config.class=someClass"

然后报告测试阶段中的以下错误,并且构建失败:

错误:无法找到或加载主类java.util.logging.config.class = someClass

如果我从命令行运行以下命令:

mvn package -Djava.util.logging.config.class=someClass

然后在构建开始时报告以下错误,但构建和测试成功:

记录配置类"someClass"失败java.lang.ClassNotFoundException:someClass

我真的不明白这种行为.有人可以开导我吗?



1> Tunaki..:

是的,你应该有

mvn package -DargLine="-Djava.util.logging.config.class=someClass"

请注意添加-D内部argLine.

我们来解释一下原因.argLine确实是maven-surefire-plugin具有相应用户属性的属性argLine.这意味着您可以直接在命令行上设置此属性-DargLine.但是,那个属性的价值是-Djava.util.logging.config.class=someClass.这正是您在POM中直接配置插件时所拥有的

-Djava.util.logging.config.class=someClass

另外,当你打电话

mvn package -Djava.util.logging.config.class=someClass

那你就是没有设置argLine属性.您正在添加系统属性.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有