Gradle,从每个源集中创建一个新的jar
我有一个子项目,首先是我的文件 主要项目梯度文件:Gradle,从每个源集中创建一个新的jar,gradle,Gradle,我有一个子项目,首先是我的文件 主要项目梯度文件: defaultTasks 'assemble' apply plugin: 'idea' allprojects { //this brings all the compiled entities to one directory archivesBaseName = "mybase" repositories { mavenCentral() } } subprojects { a
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")
}
}
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
}
}
}
子项目渐变文件:
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")
}
}
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文件。我该怎么做?目前我甚至无法编译任何内容。您应该为源代码集使用有效(Groovy)标识符,并将它们指向正确的源代码目录:
sourceSets {
gwtGraphics {
srcDirs = ["gwt-graphics/java"]
}
}
java
插件只为main
源代码集添加了一个jar
任务。您可以添加自己的,可以逐个添加,也可以通过在sourceset.all上“循环”添加。有关更多信息,请参见完整渐变分布中的或示例
其他一些提示:
- 与直接配置
sourceSet.compileClasspath
和sourceSet.runtimeClasspath
不同,您可以执行依赖项{gwtGraphicsCompile sourceSet.main.output}
等操作。这样,您就不需要对运行时类路径重复相同的配置
- 您可以全局设置它,而不是为每个编译任务设置源/目标兼容性(例如,
sourceCompatibility=1.7
)李>
- 由于继承了额外的属性,我将
ext
块移出子项目
块
很好,谢谢。我到家后会试试的。你知道有没有一个项目在gradle完成了一个相当复杂的构建系统,我可以用它作为进一步研究的例子?感谢Spring、Gradle、Spock、Geb,全部Gradle分布中的样本。