创建没有版本号的 grails 战争
Posted
技术标签:
【中文标题】创建没有版本号的 grails 战争【英文标题】:Create grails war without version number 【发布时间】:2010-09-14 22:41:22 【问题描述】:如何创建没有版本号的 grails war 文件
(例如 foo-0.1.war)
当我执行“grails war”命令时附加到末尾?
【问题讨论】:
【参考方案1】:如果有人看到这篇文章并使用 Grails 1.3.x,配置选项已从 Config.groovy
中的 grails.war.destFile
更改为 BuildConfig.groovy
中的 grails.project.war.file
。
而且文件名是相对于项目工作区的,所以它应该有一个类似的值:
grails.project.war.file = "target/$appName.war"
这是根据最新的Grails documentation.
【讨论】:
这也与 grails 2.x 相关【参考方案2】:我认为你可以在war命令中指定战争名称。
grails war foo.war
还可以查看最新的 Grails 文档,了解在何处将其设置为配置选项。有关详细信息,请参阅其他答案。
【讨论】:
旁注:这样做时,默认情况下,WAR 文件不会像预期的那样编译到target
目录,而是编译到您的项目目录。但是您也可以指定路径,请参阅grails.org/doc/2.2.1/ref/Command%20Line/war.html【参考方案3】:
来自Grails Documentation,第 17 章,部署
还有很多方法可以自定义 WAR 文件,即 创建的。例如,您可以指定 路径(绝对或相对) 到指示它在哪里的命令 放置文件和名称 给它:
grails war /opt/java/tomcat-5.5.24/foobar.war
或者,您可以添加一行到 更改默认值的 Config.groovy 位置和文件名:
grails.war.destFile = "foobar-prod.war"
当然,任何命令行参数 你提供的覆盖这个 设置。
【讨论】:
这其实是更好的答案【参考方案4】:汇总其他出色的答案。有几种选择:
在命令行显式设置:grails war foo.war
在 application.properties 中将app.version
属性设置为空将导致战争被命名为foo.war
。
使用 Config.groovy 中的 grails.war.destFile
属性显式设置战争的名称
【讨论】:
【参考方案5】:Grails 3.x 已切换到 gradle 并使用 war 插件。您可以在build.gradle
文件中指定这样的名称:
war
archiveName 'foo.war'
【讨论】:
对于 Grails 3,您必须使用 'archiveName' 而不是 'archive'。 ***.com/questions/33621966/…【参考方案6】:另一种生成没有版本号的war文件的方法是在application.properties
中保持属性app.version为空【讨论】:
这行得通,是最好的答案,因为它是该信息的主要来源。【参考方案7】:我有点迟到了……但无论如何:
我认为删除版本号的原因是无需重命名 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中所述
这种方法适用于一般的战争,而不仅仅是圣杯的战争。
【讨论】:
grails.project.war.file 属性不适用于 grails 4 嗨@user2782001,您现在找到如何使用上下文路径名创建.war 的方法了吗?用于圣杯 4 我不再使用 grails 但它可能像 grails 3 一样工作。***.com/a/39277804/1284183以上是关于创建没有版本号的 grails 战争的主要内容,如果未能解决你的问题,请参考以下文章
“Vbox安装CentOS系统”之低级错误一例:版本号的选择