在更新到版本3.0.1
之后,我的项目在gradle插件版本3.4.1
上运行得非常好。
以前,我使用的是包装器4.10.1
,现在已更新为5.1.1
。
afterEvaluate(new Action<Project>() {
@Override
void execute(Project project) {
tasks.getByName("assembleRelease").doLast {
tasks.copyReleaseBuild.execute() //error is here
tasks.copyReleaseBuildToXX.execute()
tasks.copyReleaseBuildToXXXX.execute()
}
}
copyReleaseBuild
任务的内容如下所示……
task copyReleaseBuild(type: Copy) {
def releaseDir = getProjectProperty('releaseDir')
if (releaseDir?.trim()) {
//if release folder is provided
def releaseAarFile =
getProjectProperty('sourceCodeDir') + "/android-corekit/kit/build/outputs/aar/kit-release.aar"
from releaseAarFile
into releaseDir
}
task copyReleaseBuildToXX(type: Copy) {
from "./build/outputs/aar/kit-release.aar"
into "../kitwrapper/libs"
}
task copyReleaseBuildToXXXX(type: Copy) {
from "./build/outputs/aar/kit-release.aar"
into "../kitwrapperapp/libs"
}
}
最近两天我一直在努力解决问题,但是由于我缺乏常规知识,所以没有任何效果。
答案 0 :(得分:2)
发生这种情况是因为您使用的是gradle的更新版本(请检查Numpy, Pandas: what is the fastest way to calculate dataset row value basing on previous N values?)
TaskInternal的以下属性和方法已删除-使用任务依赖项,任务规则,可重用的实用程序方法或Worker API代替直接执行任务。
- execute()
- 执行者
- getValidators()
- addValidator()
现在您不能直接调用execute
方法,但是必须使用任务依赖项才能获得相同的结果。
只需在您的build.gradle
中定义:
task copyReleaseBuild {
dependsOn 'assembleRelease'
//...
}
并删除此内容:
afterEvaluate(new Action<Project>() {
@Override
void execute(Project project) {
tasks.getByName("assembleRelease").doLast {
tasks.copyReleaseBuild.execute() //error is here
}
}
答案 1 :(得分:1)
Upgrading your build from Gradle 4.x to 5.0
TaskInternal的以下属性和方法已删除-使用任务依赖项,任务规则,可重用的实用程序方法或Worker API代替直接执行任务。
在您看来,您在任务之间有依赖性:copyReleaseBuild
必须在assembleRelease
之后运行
因此,这个简单的build.gradle
代表了这种依赖性:
task copyReleaseBuild {
dependsOn 'assembleRelease'
doLast {
println 'run copyReleaseBuild'
}
}
task assembleRelease {
doLast {
println 'run assembleRelease'
}
}
和命令gradle copyReleaseBuild
运行两个任务:
# gradle copyReleaseBuild
> Task :assembleRelease
run assembleRelease
> Task :copyReleaseBuild
run copyReleaseBuild
BUILD SUCCESSFUL in 2s
2 actionable tasks: 2 executed