我正在尝试创建多个罐子。我有一个包含多个目录的目录。每个目录都有自己的文件(xml 和 sql)。所以我试图创建一个带有子目录名称和其中所有文件的 jar。这些 jars 将用于 junit 测试,所以我想在配置阶段提前创建它。
目标目录“../dist”存在于该项目之外。
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
):
task allJars {
}
file("${projectDir}/templates").eachFile { f ->
def taskName = "jar${f.name.capitalize()}"
tasks.create(name: taskName, type: Jar) {
archiveName = "${f.name}.jar"
destinationDir = file('../dist')
// Configure each JAR however you want
}
allJars.dependsOn taskName
}
示例构建:
$ 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句