2015-03-13 78 views
0

我在gradle(multi)项目中添加了一些插件和任务,需要很长时间才能执行,因此只能在默认情况下在构建服务器上完成。开发人员应该能够致电如何在默认情况下排除某些任务?

gradlew build 

执行构建和测试应用程序的基本步骤。在构建服务器上,Jenkins在我们的例子中,我想添加一个额外的参数来启用前面提到的额外任务。例如。

gradlew build -buildserver 

所以我的问题是,我如何排除某些任务作为我的默认值,并使用参数或类似的东西包括它们?

我试图这似乎并不可能,至少在FindBugs的插件:

allprojects { 
    apply plugin: 'java' 
    apply plugin: 'findbugs' 

    ... 

    findbugs { 
    enabled = project.hasProperty('buildserver') 
    ... 
} 
+0

for findbugs任务不是'findbugs',而是'findbugsMain'。尝试:'findbugsMain.enabled = false' – Opal 2015-03-13 11:43:37

回答

3

由于Opal我指出了正确的方向,我做了以下内容: 运行构建找到任务名称并设置其enabled标志是这样的:

findbugsMain.enabled = project.hasProperty('buildserver') 
findbugsTest.enabled = project.hasProperty('buildserver') 
test.jacoco.enabled = project.hasProperty('buildserver') 
pmdMain.enabled = project.hasProperty('buildserver') 
pmdTest.enabled = project.hasProperty('buildserver') 

我加入的标志我詹金斯然后运行构建:

gradlew clean build -P buildserver 
+0

伟大的解决方案,谢谢! – 2017-02-09 16:14:47

+0

我在构建文件中将这些属性设置为false,然后在将其设置为true的情况下添加特定任务;所以gradle build会跳过findbugs,但gradle slowBuild不会。同样,我只有在我的缓慢构建integrationTests。 – 2017-06-09 15:13:21

1

所有你需要做的是增加一个断言对于相关任务

findbugs.onlyIf { project.hasProperty('buildserver') } 

你可以在gradle文档[跳过任务] [1]部分阅读更多关于它的内容。

+0

它不会工作。没有这样的任务:'findbugs'。 – Opal 2015-03-13 16:23:50

+3

我只是遵循Tim提供的示例,但我的解决方案通常适用于任何任务。 – 2015-03-13 17:04:10

+0

是的,它会的,但答案是无效的。 – Opal 2015-03-13 17:11:02