6

buildSrc/build.gradle によってコンパイルされたクラスは、メインの PROJECT クラスで使用される場合、実行時に解決されません。

My Groovy project structure looks like this:
-PROJECT
    -buildSrc/
        -build.gradle
        -/src/main/groovy
            - com.company.global.test.report
    -src/test/groovy
    -build.gradle

最上位の PROJECT/build.gradle に追加して、それによってコンパイルされたクラスが buildSrc/build.gradle によってコンパイルされたクラスを使用できるようにすることはできますか?

4

2 に答える 2

4

buildSrcメインビルドの前に実行される独自のビルド(プロジェクトではない) です。その唯一の目的は、一部のクラス (プラグイン、タスク、通常のクラス) をメイン ビルドのビルド スクリプトで使用できるようにすることです。したがって、それを「メタビルド」と呼ぶことができます。

技術的には、コンパイル済みのクラスをメイン ビルドのプロジェクトのコンパイルまたはランタイム クラス パスに追加することは可能ですがbuildSrc、それを行うことはお勧めしません。あなたの目標を達成するためのより良い方法がある可能性が非常に高いです(ただし、それらが何であるかはわかりません)。

于 2013-04-10T16:13:19.063 に答える
2

Gradle でそれを行う方法は次の2.12とおりです。

your_project/buildSrc/build.gradle

task sourcesJar(type: Jar, dependsOn: classes) {
  classifier = 'sources'
  from sourceSets.main.allSource
}

// Thanks to this, IDE like IntelliJ will provide you with "Navigate to sources"
artifacts {
  archives sourcesJar
}

your_project/build.gradle

ext.buildSrcJars = fileTree("$rootDir/buildSrc/build/libs") { include("*.jar") exclude("*sources.jar")}

// Works in every subproject
dependencies {
    compile buildSrcJars
}
于 2016-04-15T12:49:58.343 に答える