gpt4 book ai didi

gradle - 插件任务在配置阶段后执行

转载 作者:行者123 更新时间:2023-12-03 06:03:18 24 4
gpt4 key购买 nike

我正在为新的构建管道构建一整套插件。我有某些元数据,如果构建文件中不存在该元数据,则我希望它失败。例如

inventory_link: '124djsj39r'

这会将构建链接回我们的库存系统。如果构建中不存在该标签,则我不希望开发人员能够蹲下。没有测试,没有编译,没有构建,什么也没有。我希望该项目成为毫无值(value)的文件组。

现在阅读文档,我了解了构建生命周期。有一个init,config,execute,clean。基本上,如何配置自定义插件(将其编写为独立的jar),以便自动执行验证任务,以检查以确保在构建生命周期的配置阶段结束时存在此标记?

多项目构建如何影响这一点?多项目构建的每个单独项目也必须具有此标记。

编辑

我能够回到这一点。我让它运行并执行闭包,问题是 project_hash始终为null。现在被授予了,我正在使用testkit,所以我可能正在处理testkit中的一些奇怪的东西。看到任何错误吗?:
@Override
void apply(Project project) {
this.project = project

def metadata = new Metadata()

// Create and install the extension object
project.extensions.create('metadata', MetadataExtension, metadata)

def ignore = project.tasks.create(METADATA_REPORT, MetadataReportTask)
ignore.group = PLUGIN_GROUP
ignore.description = 'Gets the detailed information for this project and formats it into a user readable report'

project.afterEvaluate {
throw new InvalidUserDataException(project.metadata.metadata.project_hash)
}
}

最佳答案

您放置在build.gradle脚本主体中的任何代码都将在配置阶段运行。如果要最后完成,只需将其放在底部。

if (inventory_link == null) //or whatever check makes sense
throw new GradleException('Hey, you need to set the inventory_link')

请注意, clean不是 gradle build lifecycle中的“阶段”,如init,config,execute。这是通过任务来实现的。

关于gradle - 插件任务在配置阶段后执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40265558/

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