gradle - 无法解析 Gradle 脚本插件中的插件(外部 Gradle 文件)
问题描述
我正在尝试将一些 JFrog 发布代码从我build.gradle
的外部文件(Gradle 脚本插件)(我在不同的 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 个小时调试它并阅读了各种文章、博客和文档——
- https://plugins.gradle.org/plugin/com.jfrog.artifactory
- Gradle 与工件
- https://github.com/gradle/gradle/issues/14517
- 使用自定义 Gradle 插件时:无法解析配置 ':classpath' 的所有依赖项。
- https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:using_methods
- Android Gradle 远程脚本使用“应用自:”它有什么作用
- https://docs.gradle.org/current/userguide/plugins.html#:~:text=Script%20plugins%20are%20automatically%20resolved,applied%20to%20a%20given%20target。
- (示例)https://raw.githubusercontent.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle
- 如何将 Gradle 插件(及其依赖项)加载到 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?_ga=2.152768569.1473794243.1621063281-1685601076.1621063281
我错过了什么愚蠢的事情吗?
解决方案
不幸的是,如果您通过 ID 引用第三方插件,则无法将其传递到外部 Gradle 脚本插件中。
您将不得不通过实现类来引用插件。
有一个关于这个问题的公开票。
您可以在以下 PR中看到必要的更改。
apply plugin: 'com.jfrog.artifactory'
进入
apply plugin: org.jfrog.gradle.plugin.artifactory.ArtifactoryPlugin
推荐阅读
- javascript - 在从用户那里获得特定的 CSS 代码后重新加载 index.js
- android-studio - 安卓。录制视频时覆盖的 Surface 闪烁
- performance - 在 Jmeter 的另一个变量中传递变量
- c# - C# 对路径的访问被拒绝...(System.UnauthorizedAccessException:对路径“C:\”的访问被拒绝。)
- java - CSV 数据配置未向 HTTP 请求发送数据
- javascript - 为什么这个函数不执行任何操作?
- python - 未找到 Web Scraping Div 类
- php - 如何设置 Backpack Crud 生成器创建类 CamelCase
- android - 无法修复:找不到 kotlin-reflect-1.3.72.jar (org.jetbrains.kotlin:kotlin-reflect:1.3.72)
- c++ - 在桌面屏幕上叠加文本和图形(描边矩形)