我对文件夹buildSrc中的多项目构建有一些常见的类定义:
root
build.gradle
settings.gradle
a/
build.gradle
b/
build.gradle
buildSrc/
common.gradle
,其中 settings.gradle 表示
include ':a', ':b'
A /的build.gradle
project(":a") {
task someTask(type: CommonTask) {
println "Running some task"
}
}
buildSrc / common.gradle
class CommonTask extends DefaultTask {
@TaskAction
def someAction() {
println "Running common task"
}
}
根据文件:
https://docs.gradle.org/current/userguide/organizing_build_logic.html
buildSrc 项目。将构建类的源代码放入 某个目录和Gradle自动编译它们并包含 它们位于构建脚本的类路径中。
但是在运行gradle build
时出现错误:
无法找到属性' CommonTask'在项目':a'。
那么我们如何才能为多项目构建提供通用的类定义?
将apply from: "$rootDir/buildSrc/common.gradle"
添加到project a
无效
我将文件common.gradle
置于buildSrc/src/main/groovy/org/gradle/Common.groovy
并在根项目中' build.gradle
repositories {
mavenLocal()
}
dependencies {
compile group: 'org.gradle'
}
评估根项目' root'时出现问题。 无法在根项目' root'上找到参数[{group = org.gradle}]的方法compile()。
我有2个文件:
buildSrc/src/main/groovy/com/iggy/gradle/A.groovy
:
package com.iggy.gradle
String someA() {
return "a"
}
buildSrc/src/main/groovy/com/iggy/gradle/B.groovy
:
package com.iggy.gradle
String someB() {
String a = someA()
return a
}
但我收到错误:Could not find method someA()
不应该解决同一个包中的方法吗?添加@PackageScope
或public
无济于事。那么如何从另一个groovy文件导入方法呢?