我有一个方法可以通过compile
或compile project
知道是否包含依赖项。但当我做第二个时,它说:
找不到类型为org.gradle.api.Project的项目':parent-lib'上的参数[project':my-lib']的方法compile()
如何在方法内对项目进行编译?
ext.includeSpecial = {moduleName ->
//...elided...
compile project( ":${moduleName}" )
}
dependencies {
//This works
//compile project(':my-lib')
//But this does not
includeSpecial( "my-lib" )
}
答案 0 :(得分:1)
不要尝试调用compile
方法,它只为一些隐藏的Dependency Handler类定义,而是定义一个返回参数的方法来编译/
在dependencies
闭包内,您可以编写groovy代码并调用方法,例如:
def specialDependency() {
// if / else
}
dependencies {
compile specialDependency()
}
您可以获得更多结果,例如https://discuss.gradle.org/t/programmatically-adding-dependencies/7575/12 通过搜索“以编程方式在gradle中添加依赖项”。
更多解释,gradle实际上不是声明性的,因此依赖性阻止
dependencies {
compile "foo"
}
实际上是一个闭包,与此相同:
project.dependencies({DependencyHandler handler ->
handler.compile("foo");
})