29

如何创建一个 grails 战争文件,使其没有版本号

(例如 foo-0.1.war)

当我执行“grails war”命令时附加到末尾?

4

7 回答 7

43

如果有人看到这篇文章并使用 Grails 1.3.x,配置选项已从grails.war.destFilein更改Config.groovygrails.project.war.filein BuildConfig.groovy

此外,文件名是相对于项目工作区的,因此它应该具有如下值:

grails.project.war.file = "target/${appName}.war"

这是根据最新的Grails 文档

于 2011-02-03T22:34:11.173 回答
34

我认为您可以在 war 命令中指定战争名称。

grails war foo.war

另请查看最新的 Grails 文档,了解在何处将其设置为配置选项。有关详细信息,请参阅其他答案。

于 2008-10-02T21:32:18.467 回答
10

来自Grails 文档第 17 章,部署

您还可以通过多种方式自定义创建的 WAR 文件。例如,您可以为命令指定一个路径(绝对路径或相对路径),该命令指示它在哪里放置文件以及给它起什么名字:

grails war /opt/java/tomcat-5.5.24/foobar.war

或者,您可以在 Config.groovy 中添加一行来更改默认位置和文件名:

grails.war.destFile = "foobar-prod.war"

当然,您提供的任何命令行参数都会覆盖此设置。

于 2008-10-21T21:38:54.003 回答
5

汇总其他出色的答案。有几种选择:

在命令行上显式设置: grails war foo.war

在 application.properties 中将属性设置app.version为空将导致战争被命名foo.war

grails.war.destFile使用Config.groovy中的属性显式设置战争的名称

于 2009-05-13T01:24:14.987 回答
4

Grails 3.x 已切换到 gradle 并使用war插件。您可以在build.gradle文件中指定这样的名称:

war {
    archiveName 'foo.war'
}
于 2016-09-01T17:41:57.607 回答
1

另一种生成没有版本号的war文件的方法是在application.properties中保留属性app.version为空

于 2008-10-31T01:38:20.890 回答
0

我参加聚会有点晚了……但无论如何:

我认为删除版本号的原因是为了消除重命名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中所述

这种方法适用于一般的战争,而不仅仅是圣杯的战争。

于 2019-06-26T21:35:50.487 回答