2014-07-13 28 views
3

我需要打印gradle使用的jar文件的路徑。gradle初始化腳本中使用的jar的Gradle打印路徑

目前,如果我包括我的前夾gradle這個項目下面幾行,我能得到正確的信息:

allprojects { 
    task printDependencies << {task -> println "Subproject -> $task.project.name" } 
} 

subprojects { 
    printDependencies { 
     afterEvaluate { Project project -> 
      if (configurations.find { it.name == 'compile' }) { 
       doLast { 
        println "$project.configurations.compile.asPath\n" 
       }}}}} 

現在我想包括這種行爲變成初始化腳本,以避免複製這些代碼到我所有的build.gradle文件。

問題是我不能讓它在$ {HOME} /。gradle/somename.gradle上工作。彈出的第一個錯誤是:

Could not find method subprojects() for arguments 

有沒有什麼辦法可以將這種行爲放在gradle init文件中?

+0

而不是使用'project.afterEvaluate',這種邏輯可以進去'doLast'。 –

回答

2

Gradle構建腳本委託給Project類的實例(請參閱chapter 13 Gradle User guide),因此這是subprojects方法的來源。

但init腳本委託給Gradle(請參閱60.3 Gradle User guide)的實例,該實例沒有subprojects方法。

它有一個rootProject方法,讓你probaby要像

projectsEvaluated { 
    rootProject.subprojects { 
     ... 
    } 
    } 
+0

它不起作用。錯誤消息是: >根項目尚不可用於構建。 –

+0

看看我鏈接到的Gradle類的api。我可以看到許多可以嘗試使用它們的方法。我已經在我的答案中更新了這個例子,使用了一種這樣的方法。 –