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任务。main您可以添加自己的,一个一个或一个“循环” sourceSets.all。有关更多信息,请参阅Gradle 构建语言参考或完整的 Gradle 发行版中的示例。

其他一些提示:

  • 而不是直接配置sourceSet.compileClasspathsourceSet.runtimeClasspath你可以做dependencies { gwtGraphicsCompile sourceSets.main.output }等。然后你不需要为运行时类路径重复相同的配置。
  • 您可以全局设置(例如sourceCompatibility = 1.7),而不是为每个编译任务设置源/目标兼容性。
  • 由于继承了额外的属性,我会将ext块移出subprojects块。
于 2013-04-08T05:56:17.720 回答