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

Gradle从不在JCenter存储库之前解析Artifactory

朱乐逸
2023-03-14

我有一个Java项目的Gradle构建脚本。我已经设置了一个内部Artifactory存储库作为项目依赖项的远程。

当项目在编译时,我要Gradle首先去Artifactory并请求;如果它在那里失败,它接下来应该尝试JCenter作为备份。

artifactory {
    contextUrl = "${artifactoryContextUrl}"
    publish {
        repository {
            repoKey = 'Release'
            username = "${artifactoryUser}"
            password = "${artifactoryPassword}"
            maven = true
        }
    }
    resolve {
        repository {
            repoKey = 'repo'
            username = "${artifactoryUser}"
            password = "${artifactoryPassword}"
            maven = true
        }
    }
}

buildscript和项目都定义了它们的存储库:

buildscript {
    repositories {
        maven {
            name 'Artifactory'
            url "${artifactoryContextUrl}repo"
            credentials {
                username = "${artifactoryUser}"
                password = "${artifactoryPassword}"
            }
        }
        jcenter()
    }
}

repositories {
    maven {
        name 'Artifactory'
        url "${artifactoryContextUrl}repo"
        credentials {
            username = "${artifactoryUser}"
            password = "${artifactoryPassword}"
        }
    }
    jcenter()
}

我不得不求助于这些重复定义Artifactory repo的重复语句,因为我似乎找不到在构建脚本中定义和放置Artifactory闭包的方法,以便Gradle在尝试JCenter之前引用这个定义的Resolutionrepo。

该解决方案最好在buildscriptrepositories闭包中处理这种重复的定义,但是在安装Gradle-Artifactory插件之前,我似乎不太可能引用artifactory闭包中的属性。

共有1个答案

计弘
2023-03-14
  1. 脚本的主要部分不需要ArtiFactory{}配置和Repositories配置。使用repositoriesbuildscript中指向您的Artifactory实例,然后在主体部分中指向Artifactory{}DSL。
  2. 您不需要在脚本中配置jcenter,Artifactory默认情况下代理它。您不需要用JCenter“备份”Artifactory,因为JCenter中存在的任何内容都可以从Artifactory中解析。
 类似资料:
  • 您可能已经知道,JFrog宣布Bintray、JCenter、GoCenter和ChartCenter将于今年5月1日关闭。由于JCenter作为Android项目中的主要repo广泛用于各种依赖项,因此应该使用替代repo,我使用了mavenCentral因为它是最流行和被广泛接受的。 它按预期工作,但我只想从JCenter下载realm和其他缺少的东西,直到它完全迁移。然后看起来是这样的: 然

  • 从Gradle1.7开始,有了新的公共存储库JCenter。 所以我想问一下Maven Central中的所有jar是否都是这个repo的一部分?如果不是由什么组成的JCenter回购?Maven Central的JCenter作为停机时间是否更可靠?

  • 我已经将我的声明为我试图构建的Gradle项目的存储库: maven缓存已经包含工件,包括工件(pom和zip)。如果我在另一个Maven项目中添加了依赖关系,那么它将被正确加载: 现在,我以调试和脱机模式运行Gradle。我从MavenLocal获得了一些正确解析的工件,比如: 但是,其中一个工件似乎被放到了另一个存储库中,显然没有找到(因为它是离线的,我必须离线,因为“安全网络访问原因”[我们

  • 我是新手。我想发布这个项目,这样Maven和SBT用户就可以随时使用它。我不是这个包的原作者;它似乎已被放弃;我只想公布现在的头像。 问题就在这里: 我正在寻找关于如何解决错误消息的建议,以及关于我可能遇到的任何设置问题的建议,包括将此项目纳入JCenter以便所有人都可以使用已发布的bintray项目。

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