我有一个子项目,首先是我的文件
主要项目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:
在我的子项目中,我希望将sourceset的每个元素编译成一个单独的jar文件。我怎么做?目前我甚至无法编译任何东西。
答案 0 :(得分:2)
您应该为源集使用有效(Groovy)标识符,并将它们指向正确的源目录:
sourceSets {
gwtGraphics {
srcDirs = ["gwt-graphics/java"]
}
}
java
插件仅为jar
源集添加main
任务。您可以逐个添加,也可以在sourceSets.all
上“循环”。有关详细信息,请参阅Gradle Build Language Reference或完整Gradle分布中的示例。
其他一些提示:
sourceSet.compileClasspath
等,而不是直接配置sourceSet.runtimeClasspath
和dependencies { gwtGraphicsCompile sourceSets.main.output }
。然后您不需要为运行时类路径重复相同的配置。sourceCompatibility = 1.7
),而不是为每个编译任务设置源/目标兼容性。 ext
块移出subprojects
块。