我的build.gradle文件如下所示。
apply plugin: 'java'
repositories {
maven {
mavenCentral()
}
dependencies {
compile "commons-logging:commons-logging:1.0.4",
"commons-codec:commons-codec:1.3"
}
jar {
manifest{
attributes ("Product-Name" : project.name, "${manifestSectionName}")
attributes ("Product-Display-Name" : project.description, "${manifestSectionName}")
}
}
task build1 {
sourceSets {
main {
java {
srcDirs = ['src/java/com/abc/xyz/dir1']
}
}
}
buildDir = 'op'
jar{
archiveName = 'build1.jar'
}
}
task build2 {
sourceSets {
main {
java {
srcDirs = ['src/java/com/abc/xyz/dir2']
}
}
}
buildDir = 'op'
jar{
archiveName = 'build2.jar'
}
}
所以现在我想调用单个任务来构建单个jar,就像我们在Ant中调用单个目标一样。
所以当我调用它时:gw clean build build2 它以正确的方式构建build2.jar,但是当我运行它时:gw clean build build1,它仍然只构建build2.jar。
我很傻,所以不确定。
它仍在构建build2.jar,我不知道为什么会发生这种情况..有人可以帮助我吗?
请注意,这两项任务是相互独立的。
答案 0 :(得分:0)
配置build1和build2时,您将配置唯一的,共享的主sourceSet和唯一的共享jar任务。由于build2是在build1之后配置的,因此它会覆盖build1设置的配置。
你想要的是构建中的两个额外任务,它们都创建一个具有不同内容的jar:
task build1(type: Jar) {
dependsOn classes
archiveName = 'build1.jar'
from(sourceSets.main.output) {
include '**/package1/**/*'
}
}
task build2(type: Jar) {
dependsOn classes
archiveName = 'build2.jar'
from(sourceSets.main.output) {
include '**/package2/**/*'
}
}
但这对我来说就像糟糕的设计。如果你想生成不同的jar,那么你应该有几个子项目,都使用java插件而不需要任何配置。