如何解决无法解析 Gradle 脚本插件中的插件外部 Gradle 文件
我正在尝试将我的 build.gradle
中的一些 JFrog 发布代码干燥到外部文件(Gradle Script 插件)(我在不同的 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 with artifactory
- https://github.com/gradle/gradle/issues/14517
- When using custom Gradle plugin :Could not resolve all dependencies for configuration ':classpath'.
- https://docs.gradle.org/current/userguide/tutorial_using_tasks.html#sec:using_methods
- Android Gradle remote scripts using 'apply from:' what does it do
- 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
- How to load Gradle Plugin (with its depenecies) into build.gradle?
- Access classpath dependencies defined in buildscript block in applied external-script
- 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 脚本插件中传递应用。
你将不得不通过实现类来引用插件。
有一个 open ticket regarding this issue。
您可以在 following PR 中看到必要的更改。
apply plugin: 'com.jfrog.artifactory'
进入
apply plugin: org.jfrog.gradle.plugin.artifactory.ArtifactoryPlugin
,
外部构建脚本不支持通过 id 申请。另一种选择:
apply plugin: org.jfrog.gradle.plugin.artifactory.ArtifactoryPlugin
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。