当前位置: 首页 > 知识库问答 >
问题:

无法解析Gradle脚本插件中的插件(外部Gradle文件)

司徒光霁
2023-03-14
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
apply from: "https://raw.githubusercontent.com/wizpanda/gradle-common/main/grails-plugin-jfrog-publish.gradle"

当我运行类似-./gradlew artifactorypublish的任何Gradle任务时,它都会失败,并出现错误-

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.

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

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

  • https://plugins.gradle.org/plugin/com.jfrog.artifactory
  • 用ArtiFactory分级
  • https://github.com/gradle/gradle/issues/14517
  • 使用自定义分级插件时:无法解析配置“:classpath”的所有依赖项。
  • https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:using_methods
  • Android Gradle远程脚本使用'Apply From:‘它做什么
  • https://docs.gradle.org/current/userguide/plugins.html#:~:text=script%20plugins%20是%20自动%20解析,应用%20到%20a%20给定%20target.
  • (示例)https://raw.githubusercontent.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle
  • 如何将Gradle插件(及其depenecies)加载到build.Gradle?
  • 访问应用的外部脚本中的buildscript块中定义的类路径依赖项
  • https://discuss.gradle.org/t/how-do-i-include-buildscript-block-from-external-gradle-script/7016
  • https://docs.gradle.org/current/userguide/init_scripts.html" target="_blank">html?_ga=2.152768569.1473794243.1621063281-1685601076.1621063281

我错过了什么蠢事吗?

共有1个答案

羊舌和安
2023-03-14

不幸的是,第三方插件不能在外部Gradle脚本插件中传递应用,如果您通过ID引用它。

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

关于这个问题有一个悬而未决的问题。

apply plugin: 'com.jfrog.artifactory'
apply plugin: org.jfrog.gradle.plugin.artifactory.ArtifactoryPlugin
 类似资料:
  • 背景 我目前正在开发一个带有多个quarkus微服务的gradle多项目。为了捆绑quarkus依赖项,我使用了一个带有的预编译脚本插件。根据下面的配置,执行可以正常工作。 我意识到和之间可能存在差异,但是交换依赖关系没有太大帮助。 配置 这是我的项目的一个最小版本,允许重现错误。 这个最小的示例也可以在下面查看:https://github.com/lorenzjosten/gradle-plu

  • 我想外部化插件版本。 我试过了 但是我得到了一个未解析的引用:DependencyVersions

  • 我正在尝试运行我的项目,它运行没有任何问题,但在我更新Android Studio后…我有一个错误,我不知道我使用了哪个android studio版本之前,更新降级到它。 Android Gradle插件只支持Kotlin Gradle插件1.3.0及更高版本。以下依赖项不满足所需版本:项目':assets_audio_player'->org.jetbrains.kotlin:kotlin-g

  • 主要内容:插件类型,应用插件,编写自定义插件,从构建获取输入,标准Gradle插件插件只是一组任务,几乎所有的任务,如编译任务,设置域对象,设置源文件等都由插件处理。 插件类型 Gradle中有两种类型的插件:脚本插件和二进制插件。 脚本插件是一个额外的构建脚本,它提供了一种声明性方法来操作构建,通常在构建中使用。 二进制插件是实现插件接口并采用编程方法来操作构建的类。二进制插件可以驻留在插件JAR中的一个构建脚本和项目层次结构或外部。 应用插件 Project.apply()

  • 我找到了gradle的liquibase插件,很多人推荐我从tlberglund的gradle-liquibase插件。我使用gradle版本1.2我创建了具有下一个结构的build.gradle: 当我试着运行“gradle build”任务时,我收到了一条短信 我从中央maven存储库maven存储库中获取依赖 如果我将依赖项标记为“compile”,那么就可以了。 我检查了我的本地存储库,发

  • Gradle 是一个非常优秀的构建系统工具,允许你通过插件的方式创建自定义的构建逻辑,构建文件基于 Groovy ,并且可以组合使用各种定义的元素,然后通过代码来控制这些DSL达到定制逻辑的目的。