gradle-在特定目录下迭代创建jar
我正在尝试创建多个jar。我有一个包含多个目录的特定目录。每个目录都有自己的文件(xml和sql)。因此,我试图创建一个包含子目录名和其中所有文件的jar。这些JAR将用于junit测试,所以我想在配置阶段提前创建它 目标目录“./dist”存在于此项目之外gradle-在特定目录下迭代创建jar,gradle,build.gradle,Gradle,Build.gradle,我正在尝试创建多个jar。我有一个包含多个目录的特定目录。每个目录都有自己的文件(xml和sql)。因此,我试图创建一个包含子目录名和其中所有文件的jar。这些JAR将用于junit测试,所以我想在配置阶段提前创建它 目标目录“./dist”存在于此项目之外 ext.createTemplateJar = { sourceDirectory, jarFileName -> jar { archiveName = jarFileName from so
ext.createTemplateJar = { sourceDirectory, jarFileName ->
jar {
archiveName = jarFileName
from sourceDirectory
includeEmptyDirs = false
manifest
{
attributes 'Implementation-Title' : VENDOR_NAME
}
}
println "creating a jar for ${jarFileName}"
}
tasks.withType(Jar) {
destinationDir = file("../dist")
}
task generateTemplates {
new File("${projectDir}/templates").eachFile() { file ->
if (file.isFile()) {
return
}
println "template dir is ${file.path}"
createTemplateJar(file.path, "${file.name}.jar")
}
}
当我执行这个gradle generateTemplates时,它运行得很好,但是我没有看到在目标目录中创建的任何jar文件
这似乎有点不对劲,但我看不出来。您应该创建多个
Jar
任务,每个任务对应${projectDir}/templates
中的每个子目录,让您的generateTemplates
任务只依赖于所有这些任务。例如(我将generateTemplates
重命名为allJars
):
示例构建:
$ ls templates/
bar baz foo test
$ ./gradlew clean allJars
:clean
:jarBar
:jarBaz
:jarFoo
:jarTest
:allJars
BUILD SUCCESSFUL
Total time: 0.615 secs
$ ls ../dist/
bar.jar baz.jar foo.jar test.jar
$ ls templates/
bar baz foo test
$ ./gradlew clean allJars
:clean
:jarBar
:jarBaz
:jarFoo
:jarTest
:allJars
BUILD SUCCESSFUL
Total time: 0.615 secs
$ ls ../dist/
bar.jar baz.jar foo.jar test.jar