繁体   English   中英

从Maven加载Gradle依赖关系

[英]Gradle Dependency loading from maven

我是新来的。

我已经看到了一些有关Java依赖关系的示例,例如以下示例,但我的项目将只是一个zip文件。 我只想下载压缩文件。

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

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

问题:

  1. 依赖于Maven仓库时的流程是什么? 它将首先读取pom.xml,然后下载zip文件吗?

  2. 如何动态加载依赖项? 例如,在pom.xml中,“ commons-lang:commons-lang:2.6”的依赖项为“ 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存储库时,该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库(如果有的话,也是其传递依赖关系)是也解决了。

干杯,

勒内

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM