gradle - 在某个目录下迭代创建jar

时间:2017-07-12 15:46:00

标签: gradle build.gradle

我正在尝试创建多个罐子。我有一个包含多个目录的特定目录。每个目录都有自己的文件(xml和sql)。所以我试图创建一个带有子目录名称的jar以及其中的所有文件。这些罐子将用于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文件。

这似乎有些不对劲,但我无法分辨。

1 个答案:

答案 0 :(得分:1)

您应该创建多个h任务,一个用于 "hits": [ { "_index": "database_index", "_type": "system", "_id": "AV03gG7B3dd3_xKqi09H", "_score": 1, "_source": { "name_id": "BOX", "room_id": "63190", "event": "SysMonitor", "data": { "ip": "192.168.60.25 \n", "ns": "192.168.0.1\n", "uptime": "3:12" }, "services": { "apache2": 1, "gw-flash": 0, "appmgr": 0, "watchdog": 2, "gui": 0, "usb": 0, "internet": 0 }, 内的每个子目录,并让您的Jar任务不做任何事情,只依赖于所有这些任务。例如(我将${projectDir}/templates重命名为generateTemplates):

generateTemplates

示例构建:

allJars