我正在尝试将 build.gradle
中的一些 JFrog 发布代码干燥到外部文件(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.
但是如果我在项目的主 build.gradle
文件中定义相同的 buildscript
配置和插件,它就可以正常工作。
我已经花了 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
关于gradle - 无法解析 Gradle 脚本插件中的插件(外部 Gradle 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67548527/