Maven 程序集可以轻松替换 Gradle 的 distribution plugin。配置由两部分组成。
配置分发
配置的第一部分是分发内容的声明:
apply plugin: 'distribution'
distributions {
main {
baseName = project.name
contents {
into('lib/') { // Copy the following jars to the lib/ directory in the distribution archive
from jar
from configurations.runtimeClasspath
dirMode = 0755
fileMode = 0644
}
from('src/main/dist') { // Contents of this directory are copied by default
dirMode = 0755
fileMode = 0644
}
}
}
}
此contents 部分只是一个示例。根据您的项目,您可能想在这里做不同的事情。配置选项的描述可以在 AbstractCopyTask 的 Javadocs 和它实现的接口中找到。
src/main/dist 中的文件会自动添加到分发中。即使出版物中没有通讯员from 声明。第二个路径元素必须与分配的名称匹配(在我的示例中为 main)。我在示例中列出了目录,因为我需要在复制的文件上设置 fileMode 和 dirMode 属性。
过滤文件
也可以使用AbstractCopyTask 中定义的filter() 方法之一过滤文件。
下面的示例使用ReplaceTokens 过滤器。它替换了 ant 样式的占位符,格式如下:@placeholder@。
import org.apache.tools.ant.filters.ReplaceTokens
contents { // contents section in distribution
from('src/main/scripts') {
filter(ReplaceTokens, tokens: [placeholder: 'replacement-string' ])
filteringCharset = 'UTF-8'
}
}
这将从 src/main/scripts 目录中复制的所有文件中的字符串 @placeholder@ 替换为分发存档中的“replacement-string”。
ContentFilterable 的 Javadocs 描述了过滤文件的一些替代方法。
配置文件归档
配置的第二部分允许管理生成的存档文件的文件格式特定功能。这些设置是可选的,只有在您对标准存档的格式不满意时才需要。
默认情况下,Gradle 不会压缩它生成的 tar 存档。下面的示例配置 distTar 任务以使用 gzip 压缩 tar 文件。由于文件通常以 .tar.gz 文件的形式分发,而不仅仅是 tar 文件,因此最好将其添加到构建中:
distTar {
compression = Compression.GZIP
extension = 'tar.gz'
classifier = 'dist' // Appends a suffix to the file name
}
有关所有配置选项的说明,请参阅Tar task。
zip 存档的配置方式与 tar 存档相同。这个例子只是在文件名的末尾添加了一个分类器字符串:
distZip {
classifier = 'dist'
}
有关其他配置选项的说明,请参阅Tar task。
构建分发档案
分发档案是作为assemble 任务的一部分创建的。运行 gradle build 或 gradle assemble 将生成它们。