【问题标题】:How to create an empty folder while creating a zip in gradle如何在 gradle 中创建 zip 时创建一个空文件夹
【发布时间】:2015-04-07 12:21:05
【问题描述】:

我想构建 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"
    }

}

我需要创建“类”和“META-INF”。我如何在 buildWar 任务中做到这一点?

【问题讨论】:

  • 如果您使用war 插件,它将自动完成。为什么要手动创建war文件?
  • '因为我需要提供一些空文件夹 - 顺便说一句,如果你能给我一个战争插件使用的例子,我不喜欢
  • 真的很简单,你只需要应用那个插件,并且有合适的目录结构:gradle.org/docs/current/userguide/war_plugin.html
  • @Opal 实际上并不是一个有用的信息——如果我想收集更多的库怎么办?我可以在哪里提供目的地?如果我想在这里创建一个空文件夹怎么办?比原来更多的问题
  • 库将从适当的配置自动添加。你是指什么目的地?空文件夹,有什么用?有趣的态度。我猜几乎 100% 的 gradle 用户在构建战争时使用战争插件并且能够改变它而不是手动构建准备战争。给出完整的场景,帮助会更容易。

标签: java groovy gradle war


【解决方案1】:

我使用下面的脚本来创建一个胖 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 文件,classes 文件夹将由 Gradle 自动创建。

【讨论】:

    猜你喜欢
    • 2016-02-06
    • 1970-01-01
    • 2018-09-22
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    相关资源
    最近更新 更多