如何指定Gradle SonarQube插件运行的测试任务

时间:2017-07-25 21:13:54

标签: gradle sonarqube

我正在使用带有sonarqube插件的Gradle并使用

触发它
gradle sonarqube

然而,它正在调用内置的“测试”任务,该任务运行所有类型的测试,包括此时并非全部通过的集成测试。我希望能够指定sonarqube任务使用类似“unitTest”任务的东西,而不是运行所有内容的“测试”任务。

团队中的其他人在IDE中运行黄瓜测试也使用测试任务,所以目前当我在主要的“测试”任务中排除黄瓜测试时,他们必须发表评论,排除他们的黄瓜测试被踢开,这是不理想的。

我使用以下语法包括sonarqube:

plugins {
    id "org.sonarqube" version "2.5"
}

如何让sonarqube任务使用另一个测试任务?

更新:

使用以下代码,使子项目首先运行其unitTests以生成所需的测试报告数据,然后运行sonarqube任务。

// Removes the dependency on main test task and runs unitTests for test code coverage statistics
tasks['sonarqube'].with {
    dependsOn.clear()
    subprojects.each { dependsOn("${it.name}:unitTests") }
}

dependsOn.clear()清除所有依赖项,所以如果有多个,我可能需要做类似的事情

taskName.enabled=false

然后在任务完成后重新启用它,除非有更简单的方法吗?我尝试过dependsOn.remove(“测试”)但是没有用。

1 个答案:

答案 0 :(得分:7)

根据the docssonarqube任务默认情况下取决于test任务:

  

为了满足这些需求,如果应用java插件,插件会在测试时添加一个来自sonarqube的任务依赖项。

您可以轻松删除此任务依赖项并添加自己的依赖项:

task unitTest {
    doLast {
        println "I'm a unit test"
    }
}

tasks['sonarqube'].with {
    dependsOn.clear()
    dependsOn unitTest
}

现在,只要执行unitTest任务,就会执行sonarqube任务(及其依赖项)。请注意,dependsOn只是依赖项的列表。您可以通过多种不同方式对其进行修改。