2012-07-20 82 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