从maven加载Gradle Dependency

时间:2013-11-07 04:14:48

标签: maven dependencies 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'。如何使它自动加载并循环依赖列表?

  3. 全部谢谢

    我已经尝试了下面的脚本,但它在编译时给出了错误,但是我已经应用了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>
    

1 个答案:

答案 0 :(得分:5)

  • 在声明依赖项和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'
}
  • 默认情况下,依赖项是可传递的。这意味着,如果'commons-lang:commons-lang:2.6'在其pom.xml中依赖于'commons-lang:en:1.0'那么commons-lang库(以及它的传递依赖项,如果有的话)是也解决了。

欢呼声,