【问题标题】:Add custom maven repositories to build.gradle from Cordova从 Cordova 将自定义 maven 存储库添加到 build.gradle
【发布时间】:2019-04-30 02:59:58
【问题描述】:

我正在尝试以编程方式将存储库添加到我的build.gradle 文件中。

根据Cordova docs,可以通过与build.gradle 目录相同的build-extras.gradle 文件扩展build.gradle

问题是因为 gradle 同步仍然失败,所以没有添加/链接 repo。

这是我的 build-extras.gradle 文件:

buildscript {
  repositories {
      google()
    }
}

我需要将google() repo 添加到我的build.gradle 中,例如:

buildscript {
    repositories {

        //google() <-- here
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }

    // Switch the Android Gradle plugin version requirement depending on the
    // installed version of Gradle. This dependency is documented at
    // http://tools.android.com/tech-docs/new-build-system/version-compatibility
    // and https://issues.apache.org/jira/browse/CB-8143
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
    }
}

但我创建了 cordova docs info 来扩展而不是编辑 build.gradle

有可能吗?我的 build-extras.gradle 有什么问题?

【问题讨论】:

  • 你找到答案了吗?

标签: cordova ionic-framework gradle build.gradle


【解决方案1】:

我不确定你的意思:“问题是由于 gradle 同步仍然失败,所以没有添加/链接 repo。”

除此之外,重要的是要注意buildscript { … } 仅适用于封闭的构建脚本(文件)。换句话说,您添加到build-extras.gradlebuildscript 仅适用于这个文件;同样,Cordova 添加到build.gradlebuildscript 块仅适用于该文件。这就引出了一个问题,为什么您要更改 build.gradle 中构建脚本的类路径,即使您无法更改该文件中的任何内容?

您是否真的想为构建脚本中不需要的依赖项添加一个存储库,例如,为了编译一些Java代码?在这种情况下,您必须像这样声明您的存储库(即,notbuildscript 块内):

repositories {
    google()
}

【讨论】:

  • 我的问题是我的应用程序的原生源代码是在 gradle 4.+ 环境版本中获得的,但是这个原生源代码将在非 4.+ 环境中编译和发布。为此,我必须将“google()”存储库添加到 buildscripts -> repositories 块内的 build.gradle 中。这是正确的吗?
  • 对不起,我不明白你的意思。您能否详细说明为什么您认为您需要 google() 存储库?
  • 我正在使用 gradle wrapper 版本 > 4.x 进行开发。我客户的 gradle wrapper 版本是 2.x。该项目使用谷歌地图库,因此当我的客户尝试在 android studio 上同步项目时它没有完成并且错误是“play-services-base-license”。我的客户向我报告说,如果将 'google()' 存储库添加到 build.gradle,它会正确同步。我认为在 gradle 4.x 包装器中,播放服务和其他服务的依赖关系会自动解决,但在旧版本的 gradle 中不会。
  • google() repo 仅在 Gradle 4.0 (via) 中引入,我想知道为什么它适用于 Gradle 2.x 的客户?无论如何,我不知道为什么 play-services-base-license 模块需要位于 buildscript 的类路径中,所以我想知道我的答案中的建议是否有效?也许您必须提供更多构建配置的详细信息;有了可用的信息,很难提出更好的建议。
  • 你的建议对我不起作用。经过更多测试,如果我在 allprojects{ repositories{ google()... ...... 上添加 repo,它只适用于我的客户
猜你喜欢
  • 2014-01-01
  • 2019-01-14
  • 1970-01-01
  • 1970-01-01
  • 2016-11-07
  • 2016-05-14
  • 2016-03-06
  • 2016-03-28
  • 1970-01-01
相关资源
最近更新 更多