Grails3.0.x如何使用不同的文件后缀创建自定义war名称

Grails3.0.x如何使用不同的文件后缀创建自定义war名称,grails,gradle,Grails,Gradle,在Grails3.0.(1,2,3)中,war文件存在于“build/libs”文件夹下 但是,我想用不同的文件后缀重命名war名称,比如“app.tar.gz”,而不使用版本 google的结果都是关于Grails2.x的 我将grails.project.war.file=“target/${appName}.tar.gz”放在conf文件夹下的application.groovy文件中,但它没有用 请帮帮我,我在谷歌上搜索并试图在源代码BuildSettings.groovy中找到解决方案

在Grails3.0.(1,2,3)中,
war
文件存在于“build/libs”文件夹下

但是,我想用不同的文件后缀重命名war名称,比如“app.tar.gz”,而不使用版本

google的结果都是关于Grails2.x的

我将
grails.project.war.file=“target/${appName}.tar.gz”
放在conf文件夹下的
application.groovy
文件中,但它没有用


请帮帮我,我在谷歌上搜索并试图在源代码
BuildSettings.groovy
中找到解决方案,但它没有用。

从grails版本3开始,构建工具是gradle,您需要从build.gradle文件中更改这些参数

如果不希望该版本作为包名的一部分,则需要从build.gradle文件中注释(或删除)该版本

例如,运行以下命令

fhenri@machine:~/project/grails/sample307$ grails -version
| Grails Version: 3.0.7
| Groovy Version: 2.4.4
| JVM Version: 1.8.0_51
fhenri@machine:~/project/grails/sample307$ grails package
...
fhenri@machine:~/project/grails/sample307$ find . -name *.war
./build/libs/sample-0.1.war

After you remove the version from `build.gradle` file
fhenri@machine:~/project/grails/sample307$ grails package
...
fhenri@machine:~/project/grails/sample307$ find . -name *.war
./build/libs/sample.war
Grails使用,从插件中,使存档名称为
[baseName]-[appendix]-[version]-[classifier].[extension]
,版本已经来自
生成的
build.gradle
文件

这些都可以在war闭包中覆盖,例如,build.gradle的摘录可以

version "0.1"
war {
  appendix "so-test"
  version "1.0"
}
生成的war文件将是
sample-so-test-1.0。war
版本将来自war闭包

因此,如果您希望保留mail
version
属性,但不希望以生成的war名称生成版本,则可以使用空值覆盖该属性

version "0.1"
war {
  version ""
}
将生成一个没有版本信息的war文件,但是如果您想在其他地方使用它,您仍然可以保留它

要打包为tar/zip,您可以
遵循build.gradle中grails 3的文档:(关于TAR/ZIP分发的章节)

,应用gradle war插件后,您可以执行以下操作:

war {
   archiveName = "ROOT.war"
}

并且将在build/libs创建ROOT.war文件

war文件名似乎无法从build.gradle中配置。似乎使用了“war”插件。war任务似乎可以神奇地使用,并且似乎不需要任何配置参数。@gradle war插件Michael不需要任何配置参数?不,这需要很多,请看
archivename
是最终生成war文件名的原因,默认情况下,war文件名是
[baseName]-[appendix]-[version]-[classifier].[extension]
,并且版本也来自属性。我没有测试最新的grails版本3.1,但对于3.0.x,它只是使用gradle doc定义的war任务,并作为expected@Michael重新运行我在grails 3.1.9上制作的所有示例,这些示例仍在运行,因此不确定您所说的war文件名的含义似乎不可在build中配置。来自war文件的gradle版本来自grails生成文件后的默认
版本
,其他所有内容都可以通过war closure进行配置。我最终发现我可以添加一个war closure来覆盖设置,并且我找到了您链接到的具有可用属性的页面。如果你对Gradle一无所知的话,那就不是很直观了。不过,这是有道理的,因为我花了一些时间研究它。@Michael true,但现在grails使用gradle如果您需要高级构建功能,您需要打开gradle,好的是有好的文档和好的社区