【问题标题】:Gradle Dependency loading from maven从 maven 加载 Gradle 依赖项
【发布时间】:2013-11-18 14:57:22
【问题描述】:

我是 gradle 新手。

我已经看到了一些关于 java 依赖的例子,比如下面的例子,但我的项目只是一个 zip 文件。 我只想下载 zip 文件。

apply plugin: 'java'
dependencies {
    compile 'commons-lang:commons-lang:2.6'
}

在上面的例子中,它会自动下载 jar 文件。但如果我的 maven 存储库包含 pom.xml 中提到的关于该包的 zip,它不会下载我的 zip 文件。

问题:

  1. 依赖 maven 存储库时的流程是什么?它会先读取 pom.xml 然后下载 zip 文件?

  2. 如何动态加载依赖?例如 'commons-lang:commons-lang:2.6' 在 pom.xml 中会有 'commons-lang:en:1.0' 的依赖。如何让它自动加载和循环依赖列表?

谢谢大家

我尝试了以下脚本,但编译时出错,但我已应用 java 插件

我的 gradle 文件

apply plugin: 'java'
repositories {
    mavenLocal()
    maven {
        url "http://nexus.com/myrepo/"
    }
}
dependencies {
    compile 'com.a.b:projectA:2.0@zip'
}

下载的文件在 .m2 内,我可以毫无问题地运行

关于传递依赖的问题

我有这样的 pom.xml。但它无法加载依赖项。是先直接去新的 pom.xml 还是直接下载 zip 啊,我这样提?

   <dependencies> 
         <dependency>
              <groupId>com.a.b.c</groupId>
              <artifactId>base</artifactId>
              <version>1.2</version>
              <type>zip</type>
        </dependency>
   </dependencies>

【问题讨论】:

    标签: maven dependencies gradle


    【解决方案1】:
    • 在声明依赖项和 maven 存储库时,此 maven 存储库将用于解析工件。这意味着通常首先读取元数据,然后下载工件。如果没有声明存储库,则解析将提前失败。

    拥有像你这样的依赖符号:

    dependencies {
        compile 'commons-lang:commons-lang:2.6'
    }
    

    gradle 解析该依赖项的默认工件。如果你想从 maven Central 解析额外声明的 zip 文件,你必须使用这个符号

    repositories{
        mavenCentral()
    }
    
    dependencies {
        compile 'commons-lang:commons-lang:2.6@zip'
    }
    
    • 默认情况下,a 依赖项是可传递的。这意味着,如果例如“commons-lang:commons-lang:2.6”在其 pom.xml 中依赖于“commons-lang:en:1.0”,则 commons-lang 库(以及它的传递依赖项,如果有的话)是也解决了。

    干杯,

    勒内

    【讨论】:

    • 谢谢。所以它会先读取 pom.xml 然后下载工件。但我在上面的代码上尝试过类似的。我不知道为什么它说编译不可用。在上面的测试中,我的类路径 'com.a.b:project:1.0' 工作,但编译 'com.a.b:projectA:2.0@zip' 不起作用。
    • 你声明了一个仓库吗?查看我的更新答案
    • 是的。我已经添加了。但我找不到任何下载的文件。我的 build.gradle 在我的问题中更新了
    • 使用 mavenLocal() 而不是 mavenCentral() 从 ~/.m2/repository 解析。如果您有自定义存储库目录,请查看 gradle 用户指南以了解如何配置自定义存储库
    • 谢谢。它有效,但另一个关于传递的问题。传递的默认值是真的,对吧?我已经设置了依赖项,但它不起作用。它仅适用于java吗?我已经更新了我的 pom.xml 供您参考
    猜你喜欢
    • 1970-01-01
    • 2016-09-30
    • 2020-07-04
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多