Android 执行AssemblerEase Gradle任务现在可以从自定义任务开始工作
我在build.Gradle文件中定义了以下Gradle任务Android 执行AssemblerEase Gradle任务现在可以从自定义任务开始工作,android,android-gradle-plugin,Android,Android Gradle Plugin,我在build.Gradle文件中定义了以下Gradle任务 task myTask() << { println "Start" assembleRelease.execute() println "end" } 如您所见,“开始”后面跟着“结束”,这意味着未调用assembleerelease 我做错了什么?Gradle中的每个任务都是DAG上的节点。听起来好像你在试图用一个任务来围绕另一个任务,这不符合模型。但是,您可以使用doFirst和doLast
task myTask() << {
println "Start"
assembleRelease.execute()
println "end"
}
如您所见,“开始”后面跟着“结束”,这意味着未调用assembleerelease
我做错了什么?Gradle中的每个任务都是DAG上的节点。听起来好像你在试图用一个任务来围绕另一个任务,这不符合模型。但是,您可以使用
doFirst
和doLast
将工作附加到任何任务的开始和/或结束。如果希望它是可选的,可以使它依赖于可选的命令行参数
ext.SHOULD_WRAP = hasProperty('shouldWrap') ? shouldWrap.toBoolean() : false
if (SHOULD_WRAP) {
wrapAssemble()
}
def start() {
println "Start"
}
def end() {
println "end"
}
def wrapAssemble() {
assembleRelease.doFirst {
start()
}
assembleRelease.doLast {
end()
}
}
使用此配置,调用/gradlew assembleerelease-PshouldWrap=true
将使用预先完成和追加的工作执行组装任务。调用/gradlew assembleerelease-PshouldWrap=false
或simple/gradlew assembleerelease
将正常执行组装任务
旧答案
只需将任务设置为assembleRelease的依赖项:
task myTask()但在调用assembleRelease之前和之后如何执行代码?在您的回答中,“我的任务”将仅在之前启动。请参阅更新的回答以了解实现此目的的方法。谢谢,看起来与我的预期接近。但我并不总是希望在运行assembleRelease时调用开始和结束任务。在某些情况下,我只想运行assembleRelease,而不添加任何内容。也有办法实现吗?谢谢,虽然它看起来不是很整洁,但我想这是唯一的解决方法。我必须告诉管理员,提议的解决方案不起作用,doFirst和doLast从未被调用过。
ext.SHOULD_WRAP = hasProperty('shouldWrap') ? shouldWrap.toBoolean() : false
if (SHOULD_WRAP) {
wrapAssemble()
}
def start() {
println "Start"
}
def end() {
println "end"
}
def wrapAssemble() {
assembleRelease.doFirst {
start()
}
assembleRelease.doLast {
end()
}
}