M. *_*aka 6 gradle gradle-plugin
在尝试将我们正在使用的插件上的一些脚本升级到 Gradle 4.0.1 时失败了,我想先修复该插件。该插件是第三方开源项目。
所以我克隆了这个项目并尝试编译它。但是它失败并显示以下消息:
c:\source\gradle-xld-plugin>gradlew build
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\source\gradle-xld-plugin\build.gradle' line: 2
* What went wrong:
Plugin [id: 'com.gradle.plugin-publish', version: '0.9.7'] was not found in
any of the following sources:
- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- maven(https://artifactory/java-v) (Could not resolve plugin artifact 'com.gradle.plugin-publish:com.gradle.plugin-publish.gradle.plugin:0.9.7')
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --
debug option to get more log output.
BUILD FAILED in 0s
Run Code Online (Sandbox Code Playgroud)
插件的 build.gradle 脚本如下所示:
plugins {
id "com.gradle.plugin-publish" version "0.9.7"
id "com.github.hierynomus.license" version "0.11.0"
id 'nebula.nebula-release' version '4.0.1'
id "com.jfrog.bintray" version "1.7.3"
}
Run Code Online (Sandbox Code Playgroud)
除此之外,公司政策规定我们必须通过内部工件服务器,因此已将以下内容添加到 settings.gradle 文件中:
pluginManagement {
repositories {
maven {
url "https://artifactory/java-v"
}
}
}
Run Code Online (Sandbox Code Playgroud)
jar 文件位于以下位置:https://artifactory/java-v/com/gradle/publish/plugin-publish-plugin/0.9.7/plugin-publish-plugin-0.9.7.jar
但是当我查看错误消息时,我有点困惑,它说它找不到 com.gradle.plugin-publish:com.gradle.plugin-publish.gradle.plugin:0.9.7。它似乎用 .gradle.plugin 为 id 添加了后缀。
有谁知道我是否在看错误的位置,或者它是如何在 id 后缀 .gradle.plugin 的。难道它不应该查看具有这样 GAV 的位置:com.gradle.plugin-publish:com.gradle.plugin-publish:0.9.7?
有谁知道 Gradle 中新插件机制的解析机制是如何工作的。
提前致谢
编辑 感谢 Mateusz Chrzaszcz,我得以进步。
我对解决方案的唯一警告是它似乎是一种解决方法而不是解决方案。但它有效!
除了他的解决方案之外,您还必须解决插件问题。我能够破解我的方式来实际解析适当的名称。
为此,您必须执行以下操作:
下面是一个例子:
resolutionStrategy {
eachPlugin {
if (requested.id.namespace == 'com.gradle' && requested.id.name == 'plugin-publish') {
useModule('com.gradle.publish:plugin-publish-plugin:0.9.7')
} else if(requested.id.namespace == 'com.github.hierynomus' && requested.id.name == 'license') {
useModule('nl.javadude.gradle.plugins:license-gradle-plugin:0.11.0')
}
}
}
Run Code Online (Sandbox Code Playgroud)
尝试实施插件解析规则。
根据 gradle 文档:
插件解析规则允许您修改在plugins {} 块中发出的插件请求,例如更改请求的版本或显式指定实现工件坐标。要添加解析规则,请使用pluginManagement {}块内的resolutionStrategy {}
像那样:
pluginManagement {
resolutionStrategy {
eachPlugin {
if (requested.id.namespace == 'com.gradle.plugin-publish') {
useModule('com.gradle.plugin-publish:0.9.7') //try a few combinations
}
}
}
repositories {
maven {
url 'https://artifactory/java-v'
}
}
}
Run Code Online (Sandbox Code Playgroud)
但请记住,这是一个正在孵化的功能。
归档时间: |
|
查看次数: |
4262 次 |
最近记录: |