排除 Gradle tar/zip 工件内的基本目录
Exclude base directory inside Gradle tar/zip artifacts
maven assembly plugin 有一个 includeBaseDirectory
选项(当设置为 false 时)避免在 tar/zip 工件中有一个与工件本身同名的顶级目录.
我想用 Gradle 获得相同的结果,但我不知道怎么做。我正在使用这样的配置:
task distTar(type: Tar) {
compression Compression.GZIP
extension "tar.gz"
}
我没有看到任何符合我要求的 the Tar task 选项。如何使用 Gradle 排除存档中的基本目录?
好的,我明白了。这比我想象的要简单。要将库依赖项复制到存档根目录下的 lib
,我使用 CopySpec:
task distTar(type: Tar) {
into('lib') {
from libsDir
include '*.jar'
}
}
类似的 CopySpecs 可用于复制例如bin
和 conf
个目录。
通过重新配置 distribution plugin (which gets implicitly applied by the application plugin) 你可以简单地做(在 Kotlin DSL 中):
distributions {
main {
contents {
into("/")
}
}
}
这会影响 Tar 和 Zip 格式的输出。
(免责声明:此答案大致基于 this Gradle forum post)。
maven assembly plugin 有一个 includeBaseDirectory
选项(当设置为 false 时)避免在 tar/zip 工件中有一个与工件本身同名的顶级目录.
我想用 Gradle 获得相同的结果,但我不知道怎么做。我正在使用这样的配置:
task distTar(type: Tar) {
compression Compression.GZIP
extension "tar.gz"
}
我没有看到任何符合我要求的 the Tar task 选项。如何使用 Gradle 排除存档中的基本目录?
好的,我明白了。这比我想象的要简单。要将库依赖项复制到存档根目录下的 lib
,我使用 CopySpec:
task distTar(type: Tar) {
into('lib') {
from libsDir
include '*.jar'
}
}
类似的 CopySpecs 可用于复制例如bin
和 conf
个目录。
通过重新配置 distribution plugin (which gets implicitly applied by the application plugin) 你可以简单地做(在 Kotlin DSL 中):
distributions {
main {
contents {
into("/")
}
}
}
这会影响 Tar 和 Zip 格式的输出。
(免责声明:此答案大致基于 this Gradle forum post)。