2012-07-20 40 views
2

我有這個的build.gradle文件的正常工作:從位於其他文件夾中的文件.groovy作爲使用類(搖籃)

class Utils { 
    def doit(){ 
    println "hi from utils" 
    } 
} 

task hello << { 
    def utils = new Utils() 
    utils.doit(); 
} 

如果我的類/ .groovy作爲文件移動到子文件夾像這樣:

test 
-> groovy 
    -> Utils.groovy 
-> build.gradle 

和修改的build.gradle文件,以這樣的:

dependencies { 
    runtime fileTree(dir: 'groovy', include: '*.groovy') 
} 

task hello << { 
    def utils = new Utils() 
    utils.doit(); 
} 

該utils的類不能再被發現:

...unable to resolve class Utils 

我假設子常規應該被添加爲.gradle文件導入/在classpath /依賴項。我已閱讀這些網頁:

http://gradle.org/docs/current/userguide/dependency_management.html http://gradle.org/docs/current/userguide/custom_plugins.html http://gradle.org/docs/current/userguide/custom_tasks.html

,但一直沒能找到介紹如何導入的任何文檔。 Groovy文件在.gradle文件中。我錯過了哪個頁面來描述這個簡單的功能?

回答

4

如果你改變你的build.gradle簡單地是

task hello << { 
    def utils = new Utils() 
    utils.doit(); 
} 

然後代替

test 
-> groovy 
    -> Utils.groovy 
-> build.gradle 

Utils.groovy文件buildSrc/src/main/groovy像這樣:

test 
-> buildSrc 
    -> src 
     -> main 
      -> groovy 
       -> Utils.groovy 
-> build.gradle 

和gradle這個應該自動提取。

有關更多信息,請參見the documentation中的「41.4。在buildSrc項目中生成源代碼」一節。

+0

這很有效。結果.gradle和build文件夾是用jar,報告,類創建的。是否需要在.gradle文件中導入類?是否有可能在另一個位置指定此路徑? – u123 2012-07-20 13:39:16

+0

是的,這一切都是必要的。 (但是,那麼它需要付出多少努力?)請記住,Groovy是一種編譯語言,因此必須編譯該類並將其放到構建腳本的類路徑上,以便對構建腳本進行評估。類必須在'buildSrc'下或者外部的Jar中。其他構建腳本可以在任何地方使用,並且可以通過'apply from:「path/to/script」'來包含。 – 2012-07-22 05:24:23

+0

@PeterNiederwieser和你如何處理進口?當我在buildscript中導入東西時,它在build.gradle中工作,但在嘗試在定製類中使用依賴項時,我無法解析類XXX異常。 – sydd 2015-07-10 16:33:23

相關問題