旧Gradle/Ionic项目构建失败:依赖仓库配置问题求助
初始配置与第一次错误
初始项目根目录build.gradle配置如下:
buildscript { repositories { maven { url "https://maven.google.com" } jcenter() } dependencies { // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files classpath 'com.android.tools.build:gradle:3.0.1' } } allprojects { repositories { maven { url "https://maven.google.com" } jcenter() } }
执行构建时收到错误:
配置项目':CordovaLib'时出现问题。
无法解析配置':CordovaLib:classpath'的所有文件。找不到com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3。
已在以下位置搜索:
https://jcenter.bintray.com/com/jfrog/bintray/gradle/gradle-bintray-plugin/1.7.3/gradle-bintray-plugin-1.7.3.pom
https://jcenter.bintray.com/com/jfrog/bintray/gradle/gradle-bintray-plugin/1.7.3/gradle-bintray-plugin-1.7.3.jar
https://maven.google.com/com/jfrog/bintray/gradle/gradle-bintray-plugin/1.7.3/gradle-bintray-plugin-1.7.3.pom
https://maven.google.com/com/jfrog/bintray/gradle/gradle-bintray-plugin/1.7.3/gradle-bintray-plugin-1.7.3.jar
被以下项目依赖:
project :CordovaLib
第一次修改后的配置与错误
将仓库替换为Grails仓库后,配置如下:
buildscript { repositories { maven { url "https://repo.grails.org/grails/core" } jcenter() } dependencies { // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files classpath 'com.android.tools.build:gradle:3.0.1' } } allprojects { repositories { maven { url "https://repo.grails.org/grails/core" } jcenter() } }
执行构建收到错误:
无法解析配置':classpath'的所有文件。
找不到com.android.tools.build:gradle:3.0.1。
已在以下位置搜索:
https://repo.grails.org/grails/core/com/android/tools/build/gradle/3.0.1/gradle-3.0.1.pom
https://repo.grails.org/grails/core/com/android/tools/build/gradle/3.0.1/gradle-3.0.1.jar
https://jcenter.bintray.com/com/android/tools/build/gradle/3.0.1/gradle-3.0.1.pom
https://jcenter.bintray.com/com/android/tools/build/gradle/3.0.1/gradle-3.0.1.jar
第二次修改后的配置与错误
替换为Grails仓库+Google仓库后,配置如下:
buildscript { repositories { maven { url "https://repo.grails.org/grails/core" } google() } dependencies { // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files classpath 'com.android.tools.build:gradle:3.0.1' } } allprojects { repositories { maven { url "https://repo.grails.org/grails/core" } google() } }
执行构建收到错误:
找不到com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3。
已在以下位置搜索:
https://jcenter.bintray.com/com/jfrog/bintray/gradle/gradle-bintray-plugin/1.7.3/gradle-bintray-plugin-1.7.3.pom
https://jcenter.bintray.com/com/jfrog/bintray/gradle/gradle-bintray-plugin/1.7.3/gradle-bintray-plugin-1.7.3.jar
https://maven.google.com/com/jfrog/bintray/gradle/gradle-bintray-plugin/1.7.3/gradle-bintray-plugin-1.7.3.pom
https://maven.google.com/com/jfrog/bintray/gradle/gradle-bintray-plugin/1.7.3/gradle-bintray-plugin-1.7.3.jar
解决方案
问题核心是构建脚本需要同时访问能提供Android Gradle插件的仓库和能提供Bintray插件的仓库,且两个仓库都要配置在buildscript的repositories块中(因为插件属于构建脚本依赖)。
修改后的正确build.gradle配置如下:
buildscript { repositories { // 提供Android Gradle插件 google() // 提供com.jfrog.bintray插件 maven { url "https://repo.grails.org/grails/core" } // 兼容部分旧依赖 jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.1' } } allprojects { repositories { google() maven { url "https://repo.grails.org/grails/core" } jcenter() } }
若仍存在依赖解析问题,可尝试添加mavenCentral()仓库到repositories块中,部分旧插件也会发布到该仓库。
内容的提问来源于stack exchange,提问作者Jiří Kratochvíl

