10

如果可以在 Gradle 中使用其他项目中的任务,我会试着弄清楚。假设 ProjectB 是一个 src/main/groovy 包含 com.MyTask 的项目,其父 ProjectA

在 ProjectC 的 build.gradle 中,也有父 ProjectA:

buildscript {
    dependencies{
        project(':ProjectB')
    }
}

这似乎是合法的,因为在“project(:'ProjectB')”中引入错字很难。同样失败的是引入这一行:

import com.MyTask

项目引用在 buildscript 关闭中无效吗?还尝试将 com.MyTask 移动到 buildSrc/src/main/groovy 并取得相同的成功。

4

2 回答 2

5

对我有用的解决方案是使“com.MyTask”在配置时和源中都可用。ProjectA(父级)将此添加到 buildSrc/build.gradle 的 sourceSets 中:

sourceSets{
    main{
        groovy{
            srcDir 'ProjectB/src/main/groovy'
        }
    }
}

现在 ProjectC 和所有其他项目都可以使用 MyTask。同时它与ProjectB的最终jar捆绑在一起。

Adam Murdoch、Luke Daley 和 Steve Ebersole 之间也彻底讨论了这个问题:http: //gradle.1045684.n5.nabble.com/buildSrc-as-a-regular-project-td5677255.html

编辑:操纵父 buildSrc 比独立项目更聪明。这样 IntelliJ 就很幸运了。

于 2013-06-13T08:56:50.820 回答
0

来自 Gradle 文档15.4。将依赖项添加到任务

例 15.13。添加对另一个项目的任务的依赖

build.gradle

project('projectA') {
    task taskX(dependsOn: ':projectB:taskY') << {
        println 'taskX'
    }
}

project('projectB') {
    task taskY << {
        println 'taskY'
    }
}
于 2013-06-11T18:37:20.627 回答