我有一个测试分发版,用于与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)。

10-05 18:05