当前位置: 首页 > 知识库问答 >
问题:

gradlew更改React本地构建的jcenter()URL

房育
2023-03-14

我试图为android构建一个React原生应用程序,但在我的企业中,外部存储库被阻止(不允许外部网络)。

因此,我们使用内部maven存储库来获取工件。但是我在构建react本机应用程序时遇到了一些问题,因为具有节点模块依赖性的项目需要构建引用jcenter()存储库的本机android代码(我不想手动重写node_modules/react*/android/build.gradle)。

apply plugin:EnterpriseRepositoryPlugin

class EnterpriseRepositoryPlugin implements Plugin<Gradle> {

    private static String ENTERPRISE_REPOSITORY_URL = "https://my.enterprise.repo"

    void apply(Gradle gradle) {
        // ONLY USE ENTERPRISE REPO FOR DEPENDENCIES
        gradle.allprojects{ project ->
            project.repositories {

                // Remove all repositories not pointing to the enterprise repository url
                all { ArtifactRepository repo ->
                    project.logger.lifecycle "DEBUG : Repository ${repo.url}"
                    if (!(repo instanceof MavenArtifactRepository) ||
                          repo.url.toString() != ENTERPRISE_REPOSITORY_URL) {
                        project.logger.lifecycle "Repository ${repo.url} removed. Only $ENTERPRISE_REPOSITORY_URL is allowed"
                        remove repo
                    }
                }

                // add the enterprise repository
                jcenter {
                    name "BintrayJCenter"
                    url ENTERPRISE_REPOSITORY_URL
                }
            }
        }
    }
}

但是当我启动gradlew时,我得到了以下输出:

DEBUG : Repository https://my.enterprise.repo
DEBUG : Repository https://my.enterprise.repo
DEBUG : Repository https://my.enterprise.repo
DEBUG : Repository https://my.enterprise.repo
DEBUG : Repository https://my.enterprise.repo
DEBUG : Repository https://my.enterprise.repo
DEBUG : Repository https://my.enterprise.repo

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project 'AppliTest'.
> Could not resolve all dependencies for configuration ':classpath'.
   > Could not resolve com.android.tools.build:gradle:2.2.3.
     Required by:
         :AppliLabChatbot:unspecified
      > Could not resolve com.android.tools.build:gradle:2.2.3.
         > Could not get resource 'https://repo1.maven.org/maven2/com/android/tools/build/gradle/2.2.3/gradle-2.2.3.pom'.
            > Could not HEAD 'https://repo1.maven.org/maven2/com/android/tools/build/gradle/2.2.3/gradle-2.2.3.pom'.
               > repo1.maven.org
      > Could not resolve com.android.tools.build:gradle:2.2.3.
         > Could not get resource 'https://jcenter.bintray.com/com/android/tools/build/gradle/2.2.3/gradle-2.2.3.pom'.
            > Could not HEAD 'https://jcenter.bintray.com/com/android/tools/build/gradle/2.2.3/gradle-2.2.3.pom'.
               > jcenter.bintray.com
   > Could not resolve de.undercouch:gradle-download-task:3.1.2.
     Required by:
         :AppliLabChatbot:unspecified
      > Could not resolve de.undercouch:gradle-download-task:3.1.2.
         > Could not get resource 'https://repo1.maven.org/maven2/de/undercouch/gradle-download-task/3.1.2/gradle-download-task-3.1.2.pom'.
            > Could not HEAD 'https://repo1.maven.org/maven2/de/undercouch/gradle-download-task/3.1.2/gradle-download-task-3.1.2.pom'.
               > repo1.maven.org
      > Could not resolve de.undercouch:gradle-download-task:3.1.2.
         > Could not get resource 'https://jcenter.bintray.com/de/undercouch/gradle-download-task/3.1.2/gradle-download-task-3.1.2.pom'.
            > Could not HEAD 'https://jcenter.bintray.com/de/undercouch/gradle-download-task/3.1.2/gradle-download-task-3.1.2.pom'.
               > jcenter.bintray.com

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

插件似乎没有拦截jcenter存储库...

共有1个答案

缑勇锐
2023-03-14

在您的init脚本中,您正在对项目的存储库设置对比。但正如您在错误消息中所看到的,Gradle仍试图从“https://repo1.maven.org/...”下载一些依赖项。而不是来自您的企业repo:我想这些是您正在应用于构建脚本的插件的依赖项。因此,除了Project的依赖项存储库之外,还必须配置Project的buildscript存储库。以下代码应该可以工作(但我无法测试):

apply plugin: EnterpriseRepositoryPlugin

class EnterpriseRepositoryPlugin implements Plugin<Gradle> {

    private static String ENTERPRISE_REPOSITORY_URL = "https://repo.gradle.org/gradle/repo"

    def configRepositories = { ->
        // Remove all repositories not pointing to the enterprise repository url
        all { ArtifactRepository repo ->
            if (!(repo instanceof MavenArtifactRepository) ||
                    repo.url.toString() != ENTERPRISE_REPOSITORY_URL) {
                println "Repository ${repo.name} removed. Only $ENTERPRISE_REPOSITORY_URL is allowed"
                remove repo
            }
        }
        // add the enterprise repository
        jcenter {
            name "BintrayJCenter"
            url ENTERPRISE_REPOSITORY_URL
        }
    }

    void apply(Gradle gradle) {    

        gradle.allprojects { project ->
            // ONLY USE ENTERPRISE REPO FOR DEPENDENCIES
            project.repositories(configRepositories)
            // Only use enterprise repo for plugins classpath as well.
            project.buildscript.repositories(configRepositories)
        }
    }

}
 类似资料:
  • 我正在构建一个Quarkus应用程序,它使用mongoDB更改流功能与反应客户端。 如果我从Intellij本地启动应用程序,一切正常,但当我构建本机应用程序并在docker映像中运行时,我收到了这个错误 我使用这个命令来构建本机应用程序,因为我需要在windows上本地构建它,并在heroku上delpoy它: 这是我初始化变更流并启动集合监视的类和方法 这就是听众方法 我不理解这个错误,查看m

  • 我正在运行一个React-Native应用程序,但当我试图在android目录下gradlew installDebug时,我得到了一个构建失败。以下是我使用时得到的信息: 这是该项目的回购是从我试图设置应用程序到我的genymotion模拟器,但构建从未完成。 我已经运行了react-native start命令,并设置了与couchbase lite服务器的同步。不确定这是否是相关信息。我对本

  • 上次我使用Android Studio时,它生成了文件使用buildscript存储库,而现在有。 有人能解释一下与此相关的问题吗?还有其他回购吗?我们应该什么时候换?它们对项目、模块、库有什么影响?Android开发者还有其他必需品吗? 谁负责维护这些回购协议?

  • 我的团队正在使用React Native构建我们的第一个iOS应用程序。由于某些原因,仅在我的Mac上,运行后构建失败。自从我们使用添加Facebook身份验证后,这种情况就一直在发生。 我们都在运行Node-V7.0和Xcode的最新版本。我甚至尝试在本地删除repo并将其克隆回来。作为一个实验,我的团队的另一个成员在本地删除了他的repo,并将其克隆回来,并且能够使所有的工作。我们坐在一起,做