我生成了多个类文件夹,并尝试为每个文件夹生成一个Jar。
我将这些文件夹存储在classesDirectories
变量中。
这是我尝试的任务:
task sourcesJar(type: Jar) {
ext.counter= 0;
classesDirectories.each { aDir ->
counter++
baseName (counter.toString()) +".jar"
from "${aDir}"
destinationDir project.buildDir
}
}
问题是我只找到一个Jar(最后一个生成的)。
如何为每个类目录生成一个jar?
答案 0 :(得分:0)
Jar
任务只能生成一个存档。
您可以使用动态任务创建功能在每个类目录中声明一个Jar任务:
// Main wrapper task that will depend on each source-x tasks
task sourcesJar
ext{
// class directories
classesDirectories = ['externalClasses/app1', 'externalClasses/app2', 'externalClasses/app2']
// counter for incrementing task name
taskNum = 0
}
classesDirectories.each { srcDir ->
taskNum++
def task = task "source-${taskNum}" (type: Jar) {
baseName "${taskNum}.jar"
from file("$srcDir")
destinationDir project.buildDir
}
sourcesJar.dependsOn(task)
}
然后,您只需要执行./gradlew sourcesJar
:这将触发所有source-x
任务的执行并产生预期的jar:
11:05:20: Executing task 'sourcesJar'...
> Task :source-1
> Task :source-2
> Task :source-3
> Task :sourcesJar