gpt4 book ai didi

gradle - 如果有什么不是最新的,如何询问 gradle

转载 作者:行者123 更新时间:2023-12-04 04:19:25 24 4
gpt4 key购买 nike

有没有办法询问 gradle 是否有任何东西不是最新的并且需要构建(然后不实际构建它)?

最佳答案

这不可能。最新检查发生在执行阶段,就在 doFirst 之前。正在运行。它被计算出来并且这个值不被存储。此外,最新检查可能取决于之前的任务输出。因此,要解决任务的最新状态,您需要执行它的所有依赖项(dependsOn 任务)。因此,您所要求的理论上仅适用于不是最新的第一个任务。

要了解生命周期是如何工作的,这里有一个简单的例子:

task hello {
println "CONFIG1"
outputs.upToDateWhen {
println "UPTODATE"
return false
}
println "CONFIG2"
doFirst {
println "DOFIRST"
}
doLast {
println "DOLAST"
}
}

如果您使用 --debug 执行此操作标志,你会首先看到这个:
08:05:17.294 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry] Project : - Registering model element 'tasks.hello' (hidden = false)
08:05:17.302 [QUIET] [system.out] CONFIG1
08:05:17.329 [QUIET] [system.out] CONFIG2
08:05:17.333 [DEBUG] [org.gradle.configuration.project.BuildScriptProcessor] Timing: Running the build script took 0.764 secs

配置阶段设置最新检查。然后 Gradle 计算任务图:
08:16:26.212 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskGraphExecuter] Timing: Creating the DAG took 0.007 secs

然后才执行任务:
08:05:17.430 [INFO] [org.gradle.execution.taskgraph.AbstractTaskPlanExecutor] :hello (Thread[main,5,main]) started.
08:05:17.431 [LIFECYCLE] [class org.gradle.internal.buildevents.TaskExecutionLogger] :hello
08:05:17.432 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Starting to execute task ':hello'
08:05:17.461 [QUIET] [system.out] UPTODATE
08:05:17.465 [INFO] [org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter] Putting task artifact state for task ':hello' into context took 0.032 secs.
08:05:17.465 [DEBUG] [org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter] Determining if task ':hello' is up-to-date
08:05:17.465 [INFO] [org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter] Executing task ':hello' (up-to-date check took 0.0 secs) due to:
Task.upToDateWhen is false.
08:05:17.466 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter] Executing actions for task ':hello'.
08:05:17.467 [QUIET] [system.out] DOFIRST
08:05:17.467 [QUIET] [system.out] DOLAST

只有在构建任务树并且任务按顺序执行时才会进行最新检查。

由于此检查未存储任何值,因此在不执行任务所依赖的所有任务的情况下无法确定任务的最新状态。

关于gradle - 如果有什么不是最新的,如何询问 gradle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42064270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com