在gradle中创建zip文件时如何创建一个空文件夹

3
我希望能够构建WAR文件并包含空文件夹,如“classes”和“META-INF”。我有以下代码:
task buildWar(type: Zip){
    archiveName = 'myproject.war'
    includeEmptyDirs = true
    destinationDir = file("$targetDir/project")

    from("$root/grab/lib"){
        include "*.jar"
        into "WEB-INF/lib"
    }

}

我需要创建“classes”和“META-INF”。我该如何在 buildWar 任务内完成呢?

如果您使用war插件,它会自动完成。为什么您需要手动创建WAR文件呢? - Opal
因为我需要提供一些空文件夹 - 顺便说一句,如果您能为我提供一个war插件使用的示例,我不介意。 - perc
1
非常简单,你需要做的就是应用该插件,并拥有适当的目录结构:http://gradle.org/docs/current/userguide/war_plugin.html。 - Opal
@Opal其实并不是很有用的信息 - 如果我想收集多个库怎么办?我在哪里提供目标?如果我想在这里创建一个空文件夹怎么办?这引发了更多问题。 - perc
库将从适当的配置中自动添加。你指的是什么目的地?空文件夹,有什么用?有趣的态度。我猜几乎100%的Gradle用户在构建war时使用war插件,并能够修改它,而不是手动构建准备war。给出完整的场景,这样更容易帮助。 - Opal
显示剩余3条评论
1个回答

0
我使用下面的脚本创建一个fat JAR,你可能可以修改它来创建WAR文件:
//create a single Jar with all dependencies
task fatJar(type: Jar) {
  manifest {
    attributes 'Implementation-Title': 'Project Name',
            'Implementation-Version': version,
            'Main-Class': 'org.foo.Bar'
  }
  baseName = project.name + '-all'
  from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
  with jar 
}

上面的清单部分将生成 META-INF 子文件夹(其中清单位于其中)。

如果项目有 Java 文件,则 Gradle 将自动创建 classes 文件夹。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接