2017-09-14 100 views
2

我很困惑gradle build lifecycle几天。 Refer告诉我任务未在根项目中找到

Gradle构建有三个不同的阶段。

  • 初始化
  • 配置
  • 执行

在第三步创建任务?如果是这样,gradle如何在项目对象中找到所有tasks

这里是一个例子。

rootporject 
     |----app 
      |----build.gradle 
      |----checkstyle.gradle 

build.gradle就像平常一样简单。 checkstyle.gradle文件有一个任务。这里是它的内容。

apply plugin: 'checkstyle' 

task checkstyle(type:Checkstyle) { 
    description 'Runs Checkstyle inspection against girl sourcesets.' 
    group = 'Code Quality' 
    configFile rootProject.file('checkstyle.xml') 
    ignoreFailures = false 
    showViolations true 
    classpath = files() 
    source 'src/main/java' 
} 

./gradlew -q tasks后,没有任务checkstyle

但是,如果我删除定义到build.gradle,我得到它

有什么不对吗?提前致谢。

编辑

doc

有一个项目和文件的build.gradle之间有一个一对一的关系。

+2

您的'build.gradle'是否适用于:'checkstyle.gradle''中的任何位置?构建脚本如何知道它? – mkobit

+1

您需要按照@mkobit描述的方式包含您的'checkstyle.gradle'文件。只有'build.gradle'文件会被自动解释。在第二步中创建任务,或者,如果插件在第二步和第三步之间使用'afterEvaluate'处理程序。在*执行阶段*开始之前,任务必须存在,但在*配置阶段*中,您可能需要通过名称而不是实例来识别任务('dependsOn'myTask''而不是'dependsOn myTask')。 –

+0

@mkobit非常感谢,它的工作原理。你可以把你的评论回答? – CoXier

回答

2

您尚未应用您的其他脚本。

在您的build.gradle中,您应该添加一个apply from: 'checkstyle.gradle'

+0

下面是一个关于'apply from'和'apply plugin'之间区别的答案.https://stackoverflow.com/questions/29378249/difference-apply-from-vs-apply-plugin – CoXier

相关问题