为什么gradle在解析依赖项时会将依赖项推送到我的maven repo?

时间:2016-11-06 20:36:38

标签: gradle archiva

这是我的基本设置:

// Dependencies
repositories {
    maven { url "http://MYREPO.." }
    jcenter()
    mavenLocal()
}

dependencies {
    compile 'org.bytedeco.javacpp-presets:opencv:3.1.0-1.2'
}

根据我对依赖解析如何工作的理解,gradle应该首先尝试在我的repo中寻找依赖,然后在jcentral()然后在mavenLocal中寻找依赖。

相反,我在./gradlew汇编中得到了这个输出:

:compileJava
Download http://MYREPO.../org/bytedeco/javacpp-presets/opencv/3.1.0-1.2/opencv-3.1.0-1.2.jar
:processResources UP-TO-DATE
:classes
:jar UP-TO-DATE
:assemble UP-TO-DATE

BUILD SUCCESSFUL

事实上,当我查看我的存储库中的内容以查看发生了什么时,我发现opencv依赖关系因依赖解析而被推送。

我希望相反,工件可以从jcenter下载,它实际上存在于其中。

我正在使用apache archiva。

为什么会这样? 这种行为是否记录在某处? 如果这是我的存储库设置或gradle脚本的问题,我不会理解。

2 个答案:

答案 0 :(得分:2)

如果您的存储库正在镜像中央存储库,那么会发生什么:

  1. Gradle尝试从您的repo中找到依赖项
  2. 你的回购确实拥有它,所以它联系了它正在镜像的上游回购
  3. 依赖关系从上游仓库下载并缓存在您的仓库中
  4. 依赖关系交给Gradle
  5. 这永远不会让Gradle有机会尝试直接联系jcenter:)

答案 1 :(得分:0)

对于Apache Archiva,缓存设置可在"代理连接器"下进行配置。并在此处记录:

http://archiva.apache.org/docs/1.4-M4/adminguide/proxy-connectors.html

您基本上可以选择从镜像仓库缓存工件的频率(或根本不选择),以便在后续请求中使用。