gradle 初始化脚本无法应用人工插件

gradle init script can't apply artifactory plugin

我正在尝试将构建逻辑卸载到 gradle 初始化脚本中,该脚本包含在自定义 gradle 包装器中。这似乎很有希望。我需要做的一件事是在配置之前应用 artifactory 插件,而下面的代码在 build.gradle 中工作正常,当代码转移到初始化脚本时它找不到插件。

build.gradle:

buildscript{

    Properties properties = new Properties()
    properties.load(new File(gradle.getGradleUserHomeDir(), 'gradle.properties').newDataInputStream())

    repositories {
        maven {
            url properties.artifactory_contextUrl + '/gradle-plugins-virtual'
            credentials {
                username = properties.artifactory_user
                password = properties.artifactory_password
            }
        }
    }
    dependencies {
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.17.2"
    }
}
apply plugin: "com.jfrog.artifactory"

在初始化脚本中几乎是一样的:

initscript{

    Properties properties = new Properties()
    properties.load(new File(getGradleUserHomeDir(), 'gradle.properties').newDataInputStream())

    repositories {
        maven {
            url properties.artifactory_contextUrl + '/gradle-plugins-virtual'
            credentials {
                username = properties.artifactory_user
                password = properties.artifactory_password
            }
        }
    }
    dependencies {
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.17.2"
    }
}

apply plugin: "com.jfrog.artifactory"

但我通过这次尝试得到了 Plugin with id 'com.jfrog.artifactory' not found.

我也试过做一个init plugin,但是我的plugin功力不强,好像也失败了。

我尝试将 apply plugin 行从 init 脚本移动到 build.gradle 但也失败了,表明它可能是依赖项解析。我该如何进一步调试?

我进行了构建扫描,看来插件 jar 没问题。

org.jfrog.buildinfo:build-info-extractor-gradle:4.17.2

commons-io:commons-io:2.7
commons-lang:commons-lang:2.4
commons-logging:commons-logging:1.1.1
  
1.2
org.apache.ivy:ivy:2.2.0
org.jfrog.buildinfo:build-info-extractor:2.19.2

感谢任何帮助、意见和建议。

咆哮:gradle 文档中的示例太少了。

对于 gradle 初始化脚本,您必须使用插件的完全限定 class 名称而不是 id。 像这样:

apply plugin: org.jfrog.gradle.plugin.artifactory.ArtifactoryPlugin