【问题标题】:Exclude base directory inside Gradle tar/zip artifacts排除 Gradle tar/zip 工件中的基本目录
【发布时间】:2021-08-02 18:10:06
【问题描述】:

maven assembly plugin 有一个 includeBaseDirectory 选项(当设置为 false 时)避免在 tar/zip 工件内有一个与工件本身同名的顶级目录。

我想用 Gradle 实现相同的结果,但我不知道如何。我正在使用这样的配置:

task distTar(type: Tar) {
    compression Compression.GZIP
    extension "tar.gz"
}

我没有看到the Tar task 的任何选项可以满足我的需求。如何使用 Gradle 排除存档中的基本目录?

【问题讨论】:

  • 您是否尝试过通过Tar 任务的from 或include 方法对其进行修改?只需将其更深入地指向目录树
  • @Stanislav,感谢您的指点。我设法使用 from/include 解决了这个问题。

标签: gradle tar


【解决方案1】:

好的,我想通了。这比我想象的要简单。要将库依赖项复制到存档根目录下的lib,我使用CopySpec

task distTar(type: Tar) {
    into('lib') {
        from libsDir
        include '*.jar'
    }
}

类似的 CopySpecs 可用于复制,例如binconf 目录。

【讨论】:

    【解决方案2】:

    通过重新配置 distribution plugin(由 application plugin 隐式应用),您可以简单地(在 Kotlin DSL 中):

    distributions {
        main {
            contents {
                into("/")
            }
        }
    }
    

    这会影响 TarZip 格式的输出。

    (免责声明:此答案大致基于this Gradle forum post)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      • 2014-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多