1

サブプロジェクトがあり、最初にファイルがあります

メイン プロジェクトの gradle ファイル:

defaultTasks 'assemble'
apply plugin: 'idea'

allprojects {
    //this brings all the compiled entities to one directory
    archivesBaseName = "mybase"

    repositories {
        mavenCentral()
    }
}

subprojects {
    apply plugin: 'java'
    apply plugin: 'scala'


    compileJava {
        sourceCompatibility = JavaVersion.VERSION_1_7
        targetCompatibility = JavaVersion.VERSION_1_7
    }

    compileScala{
        sourceCompatibility = JavaVersion.VERSION_1_7
        targetCompatibility = JavaVersion.VERSION_1_7
    }

    jar {
        manifest.attributes provider: 'MyProcJar'
    }

    assemble{
        archivePath = file("${rootDir}/dist")
    }

    ext {
        springVersion = "3.2.1.RELEASE"
        springSecurityWebVersion = "3.1.3.RELEASE"
        springSecurityOauth2Version = "1.0.1.RELEASE"
        jacksonCoreVersion = "2.1.2"
    }

    dependencies {
        testCompile 'junit:junit:4.11'
    }

    tasks.withType(AbstractArchiveTask){
        destinationDir = project.rootProject.file("dists")
    }
}

サブプロジェクト gradle ファイル:

sourceSets {
    gwt-graphics {
        java {
            srcDirs = ["java"]
            compileClasspath += main.output
            runtimeClasspath += main.output
        }
    }

    login-controls {
        java {
            srcDirs = ["java"]
            compileClasspath += main.output
            runtimeClasspath += main.output
        }
    }

    sample-app {
        java {
            srcDirs = ["java"]
            compileClasspath += main.output
            runtimeClasspath += main.output
        }
    }

}

私のプロジェクトのレイアウト

mainproj/gwt/src/gwt-graphics/java:
mainproj/gwt/src/login-controls/java:
mainproj/gwt/src/sample-app/java:

私のサブプロジェクトでは、ソースセットの各要素を個別の jar ファイルにコンパイルしたいと考えています。それ、どうやったら出来るの?現時点では、何もコンパイルすることさえできません。

4

1 に答える 1

2

ソース セットには有効な (Groovy) 識別子を使用し、正しいソース ディレクトリを指す必要があります。

sourceSets {
    gwtGraphics {
        srcDirs = ["gwt-graphics/java"]
    }
}

javaプラグインは、ソース セットのjarタスクのみを追加します。main1 つずつ、または を「ループ」して、独自のものを追加できますsourceSets.all。詳細については、Gradle Build Language Referenceまたは完全な Gradle ディストリビューションのサンプルを参照してください。

その他のヒント:

  • 直接構成する代わりに、sourceSet.compileClasspathetcsourceSet.runtimeClasspathを行うことができます。そうdependencies { gwtGraphicsCompile sourceSets.main.output }すれば、ランタイム クラス パスに対して同じ構成を繰り返す必要がなくなります。
  • コンパイル タスクごとにソース/ターゲットの互換性を設定する代わりに、グローバルに設定できます (例: sourceCompatibility = 1.7)。
  • 余分なプロパティが継承されるため、extブロックをブロックの外に移動しsubprojectsます。
于 2013-04-08T05:56:17.720 に答える