如何通过命令行向Maven及Surefire插件传参至pom.xml属性?命令未生效求解
解决命令行参数覆盖Maven Surefire Plugin testnames默认值的问题
直接在maven-surefire-plugin的configuration里硬写testnames值的话,命令行传入的-Dtestnames参数不会生效——因为插件内部的硬编码配置优先级高于系统属性。按以下步骤调整即可解决:
第一步:在pom.xml的
<properties>节点里定义默认的testnames属性<properties> <testnames>Android,iOS</testnames> </properties>第二步:修改插件配置,引用这个属性代替硬编码值
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>请替换为你的插件版本</version> <configuration> <testnames>${testnames}</testnames> </configuration> </plugin> </plugins> </build>第三步:执行命令行参数,现在就能覆盖默认值了
mvn clean test -Dtestnames=iOS
原理很简单:Maven里通过-D传入的系统属性,优先级高于pom中<properties>里定义的默认值。当插件配置引用属性而非直接写死值时,就会自动使用最新的属性值。
注意:确保你的maven-surefire-plugin版本在2.12及以上,旧版本可能对属性引用的支持有问题。
内容的提问来源于stack exchange,提问作者cdub
相关产品推荐
相关产品推荐

