首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Gradle中的新插件机制解析插件

无法使用Gradle中的新插件机制解析插件
EN

Stack Overflow用户
提问于 2017-07-21 23:07:37
回答 1查看 4.4K关注 0票数 6

当我们试图升级我们的一些脚本,在我们使用的插件上升级到4.0.1级时,我们失败了,我想先修复这个插件。这个插件是一个第三方开源项目。

所以我克隆了这个项目并试图编译它。但是,它在以下消息中失败:

代码语言:javascript
复制
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

插件的build.gradle脚本开始如下:

代码语言:javascript
复制
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"
}

此外,公司策略还要求我们必须通过内部工件服务器,因此将以下内容添加到settings.gradle文件中:

代码语言:javascript
复制
pluginManagement {
    repositories {
        maven {
            url "https://artifactory/java-v"
        }
    }
}

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的后缀。

有没有人知道我是否看错了位置,或者它怎么会用.gradle.plugin作为id的后缀。它不应该看一个有这样的GAV的位置: com.gradle.plugin-publish:com.gradle.plugin-publish:0.9.7?

有没有人知道Gradle中新插件的解析机制是如何工作的。

提前感谢

编辑多亏了Mateusz,我才能进步。

我对解决方案的唯一警告是,这似乎是一种解决办法,而不是一种解决办法。但很管用!

除了他的解决方案,你还必须解决插件。我能够破解我的方式,真正解决适当的名字。

为了做到这一点,我们必须这样做:

  1. 在URL浏览器中,转到插件: id "com.github.hierynomus.license“版本"0.11.0”,转到以下网址:https://plugins.gradle.org/api/gradle/4.0.1/plugin/use/com.github.hierynomus.license/0.11.0
  2. 返回的json包含useModule调用所需的GAV。用那个

以下是一个例子:

代码语言:javascript
复制
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')
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2017-07-21 23:37:24

尝试实现插件解析规则。

根据gradle文件:

插件解析规则允许您修改插件{}块中的插件请求,例如更改请求的版本或显式指定实现工件坐标。若要添加解析规则,请在resolutionStrategy {}块内使用pluginManagement {}

就像这样:

代码语言:javascript
复制
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'
  }
 }
}

记住,这是孵化器的特性。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45247952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档