Gradle buildscriptの依存関係


176

buildScriptGradleビルドのセクションまたはビルドのルートレベルでリポジトリを宣言することの違いは何ですか。

オプション1:

build.gradle

buildScript {
    repositories {
        mavenCentral();
    }
}

または

build.gradle

repositories {
    mavenCentral();
}

回答:


165

buildScriptブロックのリポジトリは、buildScript依存関係の依存関係を取得するために使用されます。これらは、ビルドのクラスパスに置かれ、ビルドファイルから参照できる依存関係です。たとえば、インターネット上に存在する追加のプラグイン。

ルートレベルのリポジトリは、プロジェクトが依存する依存関係を取得するために使用されます。したがって、プロジェクトをコンパイルするために必要なすべての依存関係。


19
私のビルドスクリプトとプロジェクトの両方にMaven Centralが必要な場合、それを2回宣言する必要がありますか?
MarcinKoziński、2014年

18
はい、実際にそれを2回指定する必要があります。
Hiery Nomus

この例として、Spring propdepsプラグインをビルドスクリプトに追加して、通常の「コンパイル」および「testCompile」キーワードに加えて、依存関係の「提供」および「オプション」キーワードを有効にすることができます。注:warプラグインはすでに「提供」キーワードを提供しています。war内にデプロイされるjarプロジェクトのpropdepsが必要です。
Powerlord 2015

14

明確な発想をしたいと思います。このため、理解を深めるために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'
}

だから、まず一言で明確にしたい

i)buildscriptの依存関係jarファイルがbuildscriptリポジトリからダウンロードされます。[プロジェクトの外部依存関係]

ii)ルートレベルの依存関係のjarファイルがルートレベルのリポジトリからダウンロードされます。【プロジェクト依存関係の場合】

ここに、

「buildscript」ブロックは、アプリケーションコードではなく、buildscriptプロセス自体の依存関係のみを制御します。以下のような様々なGradleのプラグインとしてgradle-cobertura-plugingradle-lint-pluginbuildscriptレポから発見されました。これらのプラグインは、アプリケーションコードの依存関係として参照されません。

しかし、プロジェクトのコンパイルとテスト実行のjarファイルgroovy all jar, junit and testng jarは、ルートレベルのリポジトリから見つかります。

またmaven { url("https://plugins.gradle.org/m2/") }一部は両方のブロックで使用できます。さまざまな依存関係に使用されるためです。

リソースリンク: buildscriptクロージャーとコア内の依存関係の違い


12

ビルドスクリプト(つまり、build.gradle)には、ビルドスクリプト自体の実行に依存関係がある場合があります。これらの依存関係をbuildScriptブロックで囲みます。Gradle Beyond the Basicsの第4章で詳しく説明しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.