首页 > 解决方案 > 无法解析 Gradle 脚本插件中的插件(外部 Gradle 文件)

问题描述

我正在尝试将一些 JFrog 发布代码从我build.gradle的外部文件(Gradle 脚本插件)(我在不同的 Gradle 项目中复制)干燥。

https://github.com/wizpanda/gradle-common/blob/06a497b62fb4bb86facd96375bad1d91a67545d1/grails-plugin-jfrog-publish.gradle

buildscript {
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.21.0"
    }
}

apply plugin: 'maven-publish'
apply plugin: 'com.jfrog.artifactory'

publishing {
    publications {
        wpJFrogMaven(MavenPublication) {

            // Code removed for brevity 

        }
    }
}

// Code removed for brevity

我在build.gradle我实际项目的主要部分结束时使用了这个 Gradle 脚本插件-

apply from: "https://raw.githubusercontent.com/wizpanda/gradle-common/main/grails-plugin-jfrog-publish.gradle"

当我运行任何 Gradle 任务./gradlew artifactoryPublish时,它会失败并显示错误-

FAILURE: Build failed with an exception.

* Where:
Script 'https://raw.githubusercontent.com/wizpanda/gradle-common/06a497b62fb4bb86facd96375bad1d91a67545d1/grails-plugin-jfrog-publish.gradle' line: 14

* What went wrong:
A problem occurred evaluating script.
> Plugin with id 'com.jfrog.artifactory' not found.

但是如果我在项目的主文件中定义相同的buildscript配置和插件,它就可以正常工作。build.gradle

我已经花了 3-4 个小时调试它并阅读了各种文章、博客和文档——

我错过了什么愚蠢的事情吗?

标签: gradleartifactorygradle-plugin

解决方案


不幸的是,如果您通过 ID 引用第三方插件,则无法将其传递到外部 Gradle 脚本插件中。

您将不得不通过实现类来引用插件。

有一个关于这个问题的公开票

您可以在以下 PR中看到必要的更改。

apply plugin: 'com.jfrog.artifactory'

进入

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

推荐阅读