2017-09-14 136 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

相關問題