我在我的项目中使用了assembly maven插件,在单个zip文件中从src/main/scripts/
文件夹中交付JAR、生成可执行文件和一些脚本。我怎么能和格拉德一起呢?我见过gradle交付和应用程序插件,但我无法正确配置它们。
查看复制和压缩任务,在我的经验中,它们可以比组装插件做得更多,而且不太繁琐
https://docs . grad le . org/3.5/javadoc/org/grad le/API/tasks/copy . html https://docs . grad le . org/3.5/javadoc/org/grad le/API/tasks/bundling/zip . html
一个Maven程序集可以很容易地被Gradle的发行插件所取代。该配置由两部分组成。
配置的第一部分是发布内容的声明:
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
}
}
}
}
此内容
部分只是一个示例。根据您的项目,您可能希望在这里做不同的事情。配置选项的描述可以在AbstractCopyTask及其实现的接口的Javadocs中找到。
src/main/dist中的文件将自动添加到发行版中。即使出版物中没有来自语句的对应。第二个path元素必须与分发的名称匹配(在我的示例中为main)。我在示例中列出了目录,因为我需要在复制的文件上设置<code>fileMode
还可以使用
AbstractCopyTask
中定义的filter()方法之一过滤文件。
下面的示例使用了< code>ReplaceTokens
过滤器。它取代了格式如下的ant样式占位符:< code>@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/脚本目录复制的所有文件中的字符串@place ehold@
。
ContentFilterable的Javadocs描述了一些过滤文件的替代方法。
配置的第二部分允许管理生成的存档文件的文件格式特定html" target="_blank">功能。这些设置是可选的,仅当您对标准存档的格式不满意时才需要。
默认情况下,Gradle不会压缩它生成的tar归档文件。以下示例配置< code>distTar任务,使用gzip压缩Tar文件。由于文件通常作为. tar.gz文件分发,而不仅仅是作为tar文件分发,所以将它添加到构建中是一个好主意:
distTar {
compression = Compression.GZIP
extension = 'tar.gz'
classifier = 'dist' // Appends a suffix to the file name
}
有关所有配置选项的描述,请参见Tar任务。
zip存档可以以与tar存档相同的方式配置。此示例只需在文件名末尾添加一个分类器字符串:
distZip {
classifier = 'dist'
}
有关其他配置选项的描述,请参阅Tar任务。
分发存档是作为汇编
任务的一部分创建的。运行gradle build
或gradle汇编
将生成它们。
目标是创建一个单一的ZIP文件,但将Maven程序集插件的配置拆分成一个通用的、更具体的描述符。 但是,当两个自定义描述符具有唯一ID时,将创建两个ZIP文件,每个文件都包含预期的内容。当ID相同时,只执行最后一个描述符(或覆盖之前的内容)。 我尝试的是不可能的,还是我错过了一个选项,比如“追加到现有ZIP”,而不是“总是创建新ZIP”?
有没有一种方法可以在不绑定到一个阶段的情况下运行组装插件?如果有的话,我可以运行package和shade插件,然后独立运行assembly插件?如果可能的话,那会解决我的问题。
我是maven的初学者,现在我对这些maven插件之间的区别感到困惑。这些都是创建jar文件吗?现在我的问题是 我知道,即使没有指定这些插件中的任何一个,只要键入mvn包,就会有一个jar输出。没有这些插件的输出jar和有这些插件的输出jar有什么区别?。TIA
我有一个项目,有一个家长POM和三个孩子项目。我想在一个子POM上执行目标assembly:assembly。我已经阅读了下面的文章,但是我没有让它与maven assembly插件一起工作。 在子模块上执行Maven插件目标,但不在父模块上执行 如果我跑 我得到以下错误: [错误]无法执行目标组织。阿帕奇。专家插件:maven程序集插件:2.2-beta-5:项目内部的程序集(默认cli):读取
我以一个新的gradle用户的身份创建gradle版本,但我过去曾与maven合作过。 我试图重现maven发布插件的动作: 将分支版本更改为发行号(在svn提交) 如您所见,我正在使用: Nexus OSS作为版本控制库 SVN作为scm Gradle(2.8) 我正试图通过这两个插件实现我的目标: > 将分支版本更改为发行号(在svn提交) 创建标签(位于svn) 将分支版本更改为新快照编号(