我有一个测试分发版,用于与Maven一起运行的testNG。每当我需要默认的测试发行版时,我都可以这样做,每当我仅需要几个或仅一个测试时,就可以在命令行中更改-DoverallParams
之类的名称(尽管名称已更改)。
<properties>
<param1>x</param1>
<param2>y</param2>
<param3>z</param3>
<defaultParams>${param1},${param2}</defaultParams>
<defaultParams2>${param1},${param3}</defaultParams2> <-This does not exist yet!
<overallParams>${defaultParams}</overallParams>
</properties>
我现在需要在不同的平台上使用一组不同的测试,而不必重复或分支项目。
因此,想法是添加
defaultPrams2
并以某种方式在命令行中选择它。题:
有什么办法可以让命令行选择
defaultParams2
作为overallParams
吗?更简单了,有没有办法在命令行中引用pom属性?您对如何执行此操作还有其他想法吗?
最佳答案
有什么办法可以让命令行选择defaultParams2
作为overallParams
吗?
是的,Maven profiles可以帮助您。
您可以在pom中包含以下内容:
<profiles>
<profile>
<id>meaningful-name-here</id>
<properties>
<overallParams>${defaultParams2}</overallParams>
</properties>
</profile>
</profiles>
然后,您可以从命令行调用Maven,如下所示:
mvn clean install -Pmeaningful-name-here
基本上,
-P<id>
选项将激活上面的配置文件,然后该配置文件将覆盖overallParams
属性的值,并因此在运行时和按需切换到defaultParams2
值。这种方法比以下方法更容易出错:
mvn clean install -DoverallParams=params
您需要在每一次键入所需参数的位置(因此,按需覆盖
overallParams
的值)。只需选择一个比meaningful-name-here
更好(更短)的id即可:)有没有一种方法可以在命令行中引用pom属性?
是的,如上所述,通过显式覆盖(
-D
)或配置文件(-P
)。