gradle - 我如何知道gradle插件属性的评估何时会推迟?

标签 gradle groovy

我正在使用avast的docker compose插件。以下是相关的节。如何确定在配置阶段是否将调用强制性DockerWebTag()?检查插件代码以确定何时调用闭包的唯一方法是吗?

很多时候,我只有在任务图中包含任务时才想提供的信息,但是获取这些信息可能很昂贵,不可用或者需要在获取项目参数时对其进行验证。例如,我不希望有人使用“最新”标签显示堆栈的preprod docker镜像实例,因此,如果DockerWebTag()是“最新”标签,则它会引发异常,否则它将返回当前标签。

dockerCompose {
    preprod {
        useComposeFiles = ['docker-compose.yml']
        environment.putAll([
                WEB_DOCKER_IMAGE_VERSION          : mandatoryDockerWebTag()
        ])
        tcpPortsToIgnoreWhenWaiting = [33333]
    }
}

最佳答案

How can I tell if mandatoryDockerWebTag() will be called during the configuration phase?



我不相信有一种方法可以明确地告诉如何或何时在Gradle中调用任务或配置,而不会:
  • 检查您正在使用的插件的来源。
  • 检查build scan报告。

  • For instance I don't want someone bringing up the preprod docker image instance of our stack



    不幸的是,您无法控制插件作者对Gradle配置执行的操作。他们可以自由/完全访问您的项目,并且据我所知可以随意配置/更改。

    好的/有效的插件作者(IMO)使用configuration avoidance。它不仅适用于任务,而且还适用于配置。

    关于gradle - 我如何知道gradle插件属性的评估何时会推迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58249350/

    相关文章:

    android - 尝试将本地 android 库模块发布到 Artifactory

    groovy - 在 apache-nifi 中使用 groovy

    spring - Groovy + Spring - 没有样板(构造函数)代码的 DI

    grails - Cobertura Grails代码覆盖率

    grails - mockDomain 的特殊行为

    android - 多个dex文件定义Lorg/apache/commons/logging/impl/LogFactoryImpl

    java - Spring Boot 条件编译/配置

    Gradle - 无法访问类字段

    eclipse - Gradle 为 native 依赖项生成错误的 Eclipse 类路径

    java - 在 groovy 中发送邮件