答えて

9

ここでは、依存関係の設定と依存関係のソースという2つのことについて説明します。

依存関係設定が

設定が順番に発見したライブラリをあなた自身のプロジェクト/ライブラリを指定することの痛みを取り除く依存関係の推移性の定義に役立ち、自動的にそれらを含めて、必要となります。 Gradleでの構成のこの概念はMaven's scopesのものと非常に似ています

  1. compile:コンパイル依存関係は、プロジェクトのすべてのクラスパスで利用できます。さらに、これらの依存関係は依存するプロジェクトに伝播されます。コンパイル時の依存関係は、通常、実行時に必要です。
  2. apk:ランタイム依存関係を定義します。このスコープの依存関係は、コンパイル時には必要ありませんが、実行のために使用されます。これは、コンパイル時に時間を節約でき、プロジェクトが実際に実行されても依存関係を維持できることを意味します。 Thisは、apk依存関係を使用する良い例です。
  3. provided:これは、この依存関係が実行時環境で利用可能であることを意味します。結果として、このスコープはコンパイルおよびテストのクラスパスでのみ使用でき、推移的ではありません。 Androidプロジェクトではサポートされていませんが、hereのように独自の設定を定義することで回避できます。

そして、そこなtestCompileあなたは、Android上で発生する可能性がより多くの構成は、あなただけのテストのために使用されるコンパイル時の依存関係を指定することを可能にする、あるあなたがテストでのJUnitを使用したいと言います次のように行います:

testCompile 'junit:junit:4.12' 

依存ソース

をあなたはあなたのために利用可能な構成を理解すれば、あなたは実際の依存関係を指定する必要があります。依存関係は内部的または外部的である可能性があります。あなたが作業している別のライブラリや公に利用可能なライブラリに依存している可能性があります。ここにはprojectキーワードが入っていますので、内部モジュールやライブラリへの依存関係を指定することができます。依存関係をcompile projectと定義すると、そのモジュールまたはライブラリがプロジェクトに推移的な依存関係として追加されます。

次の3つのモジュール(producerconsumershared)でプロジェクトmessagesがあるとし、次のように、プロジェクト構造はなります

messages/ 
    build.gradle 
    settings.gradle 
    consumer/ 
     build.gradle 
    producer/ 
     build.gradle 
    shared/ 
     build.gradle 

今すぐJSON形式で、そのことの両方consumerproducerストアメッセージを想定その目的のためにgoogle-gsonを使用します。両方のプロジェクトに依存する共通ソースコードがあるとします(sharedモジュール)。 consumerのbuild.gradleには、次の依存関係を定義することができます。

dependencies { 
    // Internal dependency to project shared 
    compile project (':shared') 

    // External dependency to publicly available library, 
    // through public repositories such as jcenter() or mavencentral() 
    compile 'com.google.code.gson:gson:1.7.2' 
} 

要約すると、それはあなたがcompilecompile projectとして依存関係を宣言することができます構成両方の組み合わせで、apk projectともっと!

+2

Gradleは* scope *ではなく* configuration *を使用します。 – RaGe

+1

ありがとう@RaGe、あなたは正しいです。適切なグラフル語彙を使って答えを更新しました。 – unbekant

関連する問題