3

我是新手。

我已经看到了一些关于 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 插件

我的毕业档案

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>
4

1 回答 1

6
  • 在声明依赖项和 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 库(以及它的传递依赖项,如果有的话)是也解决了。

干杯,

勒内

于 2013-11-07T07:43:02.867 回答