从maven加载Gradle Dependency

Tho*_*Lee 2 dependencies gradle maven

我是新手.

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

apply plugin: 'java'
dependencies {
    compile 'commons-lang:commons-lang:2.6'
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,它会自动下载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'
}
Run Code Online (Sandbox Code Playgroud)

我可以毫无疑问地运行下载的文件在.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>
Run Code Online (Sandbox Code Playgroud)

Ren*_*hke 5

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

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

dependencies {
    compile 'commons-lang:commons-lang:2.6'
}
Run Code Online (Sandbox Code Playgroud)

gradle解析该依赖项的默认工件.如果要从maven central解析其他声明的zip文件,则必须使用此表示法

repositories{
    mavenCentral()
}

dependencies {
    compile 'commons-lang:commons-lang:2.6@zip'
}
Run Code Online (Sandbox Code Playgroud)
  • 默认情况下,依赖项是可传递的.这意味着,如果'commons-lang:commons-lang:2.6'在其pom.xml中依赖于'commons-lang:en:1.0'那么commons-lang库(以及它的传递依赖项,如果有的话)是也解决了.

干杯,

勒内