通过Maven命令行设置属性
我对使用Maven时通过命令行为某些单元测试设置属性的正确方法感到困惑。有很多问题(例如,在不设置MAVEN_OPTS环境变量的情况下指定Maven内存参数,是否可以通过命令行将jvm
args传递给maven,如何为Junit单元测试设置JVM参数?)碰到这个问题,但是没有人正在寻找我的答案。
我想将属性设置java.util.logging.config.class
为某个值,但是我不想设置MAVEN_OPTS
环境变量。
我可以使用以下属性在我的pom文件中配置surefire插件:
<argLine>-Djava.util.logging.config.class=someClass</argLine>
以便在每次测试阶段运行时进行设置。
但是,如果我从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
我不太了解这种行为。有人可以启发我吗?
回答:
是的,你应该有
mvn package -DargLine="-Djava.util.logging.config.class=someClass"
请注意在中添加-D
了argLine
。
让我们解释一下原因。argLine
实际上是maven-surefire-
plugin具有相应用户属性的属性argLine
。这意味着您可以使用在命令行上直接设置此属性-DargLine
。但是,该属性的值为-Djava.util.logging.config.class=someClass
。这就是您直接在POM中配置插件时的结果
<argLine>-Djava.util.logging.config.class=someClass</argLine>
此外,当您致电
mvn package -Djava.util.logging.config.class=someClass
则您未设置该argLine
属性。您正在添加系统属性。
以上是 通过Maven命令行设置属性 的全部内容, 来源链接: utcz.com/qa/407417.html