如果可以使用Gradle中其他项目的任务,请尝试解决问题.假设ProjectB是一个包含com.MyTask的src/main/groovy的项目,具有父ProjectA
在ProjectC的build.gradle中,还有父ProjectA:
buildscript {
dependencies{
project(':ProjectB')
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎是合法的,因为在"项目(:'ProjectB')中引入拼写错误"很难.同样失败的是引入这条线:
import com.MyTask
Run Code Online (Sandbox Code Playgroud)
项目引用在buildscript闭包中无效吗?还尝试将com.MyTask移动到buildSrc/src/main/groovy并获得相同的成功.
对我有用的解决方案是使“com.MyTask”在配置时和源代码中都可用。ProjectA(父项)将其添加到 buildSrc/build.gradle 的 sourceSets 中:
sourceSets{
main{
groovy{
srcDir 'ProjectB/src/main/groovy'
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在 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 就很开心了。
| 归档时间: |
|
| 查看次数: |
2891 次 |
| 最近记录: |