gradle依赖于在buildscript中的项目

时间:2013-06-11 17:26:40

标签: gradle

如果可以使用Gradle中其他项目的任务,请尝试解决问题。假设ProjectB是一个包含com.MyTask的src / main / groovy项目,具有父项ProjectA

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

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

这似乎是合法的,因为在“项目(:'ProjectB')中引入拼写错误”很难。什么也失败了引入这一行:

import com.MyTask

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

2 个答案:

答案 0 :(得分:4)

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

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

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

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

编辑:操作父buildSrc比独立项目更聪明。那样IntelliJ很幸运。

答案 1 :(得分:0)

来自Gradle文档15.4. Adding dependencies to a task

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

build.gradle

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

project('projectB') {
    task taskY << {
        println 'taskY'
    }
}