【问题标题】:Cannot overwrite pom maven-surefire-plugin from command line无法从命令行覆盖 pom maven-surefire-plugin
【发布时间】:2013-09-11 06:34:43
【问题描述】:

我在 pom 中有插件 maven-surefire-plugin,skipTests 为 true。 但是,有时我想从命令行运行测试,我想从命令行覆盖这个插件并保持 pom 文件不变。

我试过了

mvn install -DskipTests=false
但它仍然跳过测试...

知道如何解决我的问题吗...?
谢谢

【问题讨论】:

    标签: java unit-testing maven plugins


    【解决方案1】:

    Skipping by default在插件文档中有专门讨论:

    如果您想默认跳过测试但希望能够重新启用 从命令行进行测试,您需要通过属性部分 在 pom 中

    换句话说,使用一个属性作为默认值:

        <configuration>
          <skipTests>${skipTests}</skipTests>
        </configuration>
    

    定义一个属性:

        <properties>
          <skipTests>true</skipTests>
        </properties>
    

    可以从命令行覆盖属性:

        mvn install -DskipTests=false
    

    注意上面命令行中的skipTests指的是属性,而不是同名的插件参数。

    【讨论】:

    【解决方案2】:

    使用配置文件可以解决问题。它需要您更改 pom 文件,尽管它会为您提供所需的行为。

    在项目元素中设置属性

    <properties>
      <runtests>false</runtests>
    </properties>
    

    现在创建个人资料

        <profile>
            <id>run-tests</id>
            <properties>
                <runtests>true</runtests>
            </properties>
        </profile>
    

    在surefire插件配置中

    <skipTests>${runtests}</skipTests>
    

    现在运行 mvn install -P run-tests 此命令将激活配置文件,从而将 runtests 属性设置为 true

    【讨论】:

      最近更新 更多