我可以把我的自定义任务类放在Gradle的哪里

我可以把我的自定义任务类放在Gradle的哪里,gradle,Gradle,编写自定义插件并将其包含在构建脚本中很容易 apply from: "utilities.gradle" 出于测试目的,此文件与build.gradle位于同一目录中 task hellox(type: GreetingTask) 从build.gradle调用utilities.gradle中定义的任务不会带来任何麻烦。 在utilities中,gradle也是一个定义的插件——从build.gradle配置它就行了 但是如果我在utilities.gradle中定义了一个自定义任务,调用

编写自定义插件并将其包含在构建脚本中很容易

apply from: "utilities.gradle"
出于测试目的,此文件与build.gradle位于同一目录中

task hellox(type: GreetingTask)
从build.gradle调用utilities.gradle中定义的任务不会带来任何麻烦。 在utilities中,gradle也是一个定义的插件——从build.gradle配置它就行了

但是如果我在utilities.gradle中定义了一个自定义任务,调用它是没有问题的,但是如果我想在build.gradle中使用这个自定义任务,它会说

> Could not find property 'GreetingTask' on root project 'TestGradle'.
utilities.gradle:

task hello(type: GreetingTask)

class GreetingTask extends DefaultTask {
    @TaskAction
    def greet() {
        println 'hello from GreetingTask'
    }
 }
格雷德尔先生

task hellox(type: GreetingTask)
好的。。。我在这里阅读了文档:

它说自定义任务在外部不可见。。。 但是。。。如何与团队共享自定义任务,而无需为所有内容制作Jar。 我想要的是将utilities.gradle放在网络驱动器上,并与其他驱动器共享


请帮助

有一个特殊的
$rootDir/buildSrc
目录,它是它自己的构建。此生成的所有类都可用于“主”生成中的所有生成脚本。
buildSrc
build有一个默认的
build.gradle
,但是您可以添加自己的。默认情况下,Java类应位于
src/main/Java
下,Groovy类应位于
src/main/Groovy
下。您可以在中阅读有关
buildSrc
的更多信息


要在多个构建中共享类,一个发布Jar的独立插件项目是最好的选择。

hmm谢谢Peter,我期待这个答案,但这种方法真的实用吗?在buildSrc中与子项目共享内容应该不会有问题,但在工作组(多个构建)中仅与Jar共享内容似乎有点过于复杂,但我会尝试一下。好的,我尝试了gradle-1.6/samples/customPlugin。这是gradle上传档案和gradle hello在消费者。。。没那么复杂;-)我是Gradle/groovy的新手,但发现与它一起工作真的很棒(来自ANT)。我有一个相当长的脚本,所以我想我应该使用单独的脚本并使用“apply from:”,但我使用的是自定义类,这些类只能在它们所在的脚本中找到。所以我尝试了这个buildSrc来处理额外的groovy脚本,但是现在我在buildSrc脚本中得到了属性的“notfound”错误。有什么建议吗?我肯定我错过了一些明显的东西。。。