gpt4 book ai didi

groovy - 如何在自定义 Gradle 插件中获取 $project.version?

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

在自定义 gradle 插件中 project.version似乎总是 unspecified .为什么以及如何检索 project.version在自定义插件(类)中?

例如:

apply plugin: 'java'
apply plugin: MyPlugin

version = "1.0.0"

println "In build file: $project.version"

class MyPlugin implements Plugin<Project> {
public void apply(Project project) {
project.task('myTask') {
println "In plugin: $project.version"
}
}
}

打印出来:
%> gradle -q myTask
In plugin: unspecified
In build file: 1.0.0

除了我真的很想知道为什么吗?

最佳答案

处理评估顺序是编写插件时的挑战,需要一些知识和专业知识才能掌握。

请注意,在构建脚本中,插件在设置版本之前被应用(并因此被执行!)。这是常态,插件必须处理它。粗略地说,每当插件访问 Gradle 对象模型的可变属性时,它必须将该访问推迟到配置阶段结束。 (在此之前,该属性的值仍然可以更改。)

Gradle 的一些 API(惰性集合、接受回调的方法等)为处理这个问题提供了特殊的支持。除此之外,您可以将受影响的代码包装在 project.gradle.projectsEvaluated { ... } 中。 ,或者使用更复杂的“约定映射”技术。

Gradle User Guidehttp://forums.gradle.org提供有关这些主题的更多信息。

关于groovy - 如何在自定义 Gradle 插件中获取 $project.version?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13198358/

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