GradleビルドのbuildScript
セクションまたはビルドのルートレベルでリポジトリを宣言することの違いは何ですか?.
オプション1:
build.gradle:
buildScript {
repositories {
mavenCentral();
}
}
または
build.gradle:
repositories {
mavenCentral();
}
BuildScriptブロック内のリポジトリは、buildScript依存関係の依存関係を取得するために使用されます。これらは、ビルドのクラスパスに置かれ、ビルドファイルから参照できる依存関係です。たとえば、インターネット上に存在する追加のプラグイン。
ルートレベルのリポジトリは、プロジェクトが依存する依存関係を取得するために使用されます。したがって、プロジェクトのコンパイルに必要なすべての依存関係。
ビルドスクリプト(つまり、build.gradle)には、ビルドスクリプト自体の実行にいくつかの依存関係がある場合があります。これらの依存関係をbuildScriptブロック内に囲みます。 Gradle Beyond the Basicsの第4章 で詳しく説明しています。
私はあなたに明確な概念を与えたいです。このため、理解を深めるためにbuild.gradeスナップショットコードを添付しています。
buildscript依存関係:
buildscript {
repositories {
maven { url("https://plugins.gradle.org/m2/") }
}
dependencies {
classpath 'net.saliman:gradle-cobertura-plugin:2.3.2'
classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
}
}
ルートレベル/コア依存関係:
repositories{
mavenLocal()
maven { url("https://plugins.gradle.org/m2/") }
maven { url "https://repo.spring.io/snapshot" }
}
dependencies {
//Groovy
compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.3.10'
//Spock Test
compile group: 'org.spockframework', name: 'spock-core', version: '1.0-groovy-2.3'
//Test
testCompile group: 'junit', name: 'junit', version: '4.10'
testCompile group: 'org.testng', name: 'testng', version: '6.8.5'
}
だから、最初に私は単一のWordでそれを明確にしたい
i)buildscript依存関係jarファイルは、buildscriptリポジトリからダウンロードされます。[プロジェクト外部依存関係]
ii)ルートレベルの依存関係jarファイルはルートレベルのリポジトリからダウンロードされます。[プロジェクトの依存関係の場合]
ここに、
「buildscript」ブロックは、buildscriptプロセス自体の依存関係のみを制御し、アプリケーションコードの依存関係は制御しません。 gradle-cobertura-plugin
、gradle-lint-plugin
などのさまざまなgradleプラグインは、buildscriptリポジトリから見つかります。これらのプラグインは、アプリケーションコードの依存関係として参照されません。
ただし、プロジェクトのコンパイルとテストの実行では、groovy all jar, junit and testng jar
などのjarファイルがルートレベルのリポジトリから見つかります。
そして別のこと、maven { url("https://plugins.gradle.org/m2/") }
部分は両方のブロックで使用できます。異なる依存関係に使用されるためです。
リソースリンク:buildscriptクロージャーとコア内の依存関係の違い