通过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"

请注意在中添加-DargLine

让我们解释一下原因。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

回到顶部