3

私は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 を持っています。しかし、依存関係をロードできません。このようにsthについて言及すると、最初に新しい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'
}
  • デフォルトでは、依存関係は推移的です。つまり、たとえば「commons-lang:commons-lang:2.6」がその pom.xml で「commons-lang:en:1.0」に依存している場合、commons-lang ライブラリ (また、その推移的な依存関係がある場合) は、も解決。

乾杯、

レネ

于 2013-11-07T07:43:02.867 に答える