如何创建一个 grails 战争文件,使其没有版本号
(例如 foo-0.1.war)
当我执行“grails war”命令时附加到末尾?
如果有人看到这篇文章并使用 Grails 1.3.x,配置选项已从grails.war.destFile
in更改Config.groovy
为grails.project.war.file
in BuildConfig.groovy
。
此外,文件名是相对于项目工作区的,因此它应该具有如下值:
grails.project.war.file = "target/${appName}.war"
这是根据最新的Grails 文档。
我认为您可以在 war 命令中指定战争名称。
grails war foo.war
另请查看最新的 Grails 文档,了解在何处将其设置为配置选项。有关详细信息,请参阅其他答案。
来自Grails 文档,第 17 章,部署
您还可以通过多种方式自定义创建的 WAR 文件。例如,您可以为命令指定一个路径(绝对路径或相对路径),该命令指示它在哪里放置文件以及给它起什么名字:
grails war /opt/java/tomcat-5.5.24/foobar.war
或者,您可以在 Config.groovy 中添加一行来更改默认位置和文件名:
grails.war.destFile = "foobar-prod.war"
当然,您提供的任何命令行参数都会覆盖此设置。
汇总其他出色的答案。有几种选择:
在命令行上显式设置: grails war foo.war
在 application.properties 中将属性设置app.version
为空将导致战争被命名foo.war
。
grails.war.destFile
使用Config.groovy中的属性显式设置战争的名称
Grails 3.x 已切换到 gradle 并使用war插件。您可以在build.gradle
文件中指定这样的名称:
war {
archiveName 'foo.war'
}
另一种生成没有版本号的war文件的方法是在application.properties中保留属性app.version为空
我参加聚会有点晚了……但无论如何:
我认为删除版本号的原因是为了消除重命名war文件的需要,以便它部署在“正确的”上下文路径/appName上。如果是这种情况,那么更好的选择是使用版本化的 war 文件名,这样您就可以使用grails-app/conf/BuildConfig.groovy中的以下命名模式在 tomcat 上同时部署多个版本:
grails.project.war.file = "target/${appName}##${appVersion}.war"
如http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Parallel_deployment中所述
这种方法适用于一般的战争,而不仅仅是圣杯的战争。