如果可以使用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并获得相同的成功。
答案 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'
}
}