GRAILS ---命令 grails war 和 gradle build 有啥区别?

Posted

技术标签:

【中文标题】GRAILS ---命令 grails war 和 gradle build 有啥区别?【英文标题】:GRAILS --- what's the difference between commands grails war and gradle build?GRAILS ---命令 grails war 和 gradle build 有什么区别? 【发布时间】:2017-11-24 07:59:51 【问题描述】:

我听说你应该输入命令

 grails war

构建您的项目。到目前为止,我一直认为 Gradle 负责在 Grails 中构建应用程序。我一直在做后者,坚信我的应用程序已经构建。那么有什么区别

 grails war

 gradle build

?

难道只是grails war就是gradle build + create war文件吗?

【问题讨论】:

【参考方案1】:

比较 Grails 和 Gradle 并不是那么简单。 Gradle 是一个构建工具,而 Grails 是一个 Web 应用程序框架。

但是,Grails 提供了一个命令行工具,在 docs 中有描述:

Grails 整合了强大的构建系统 Gant,它是一个围绕 Apache Ant 的 Groovy 包装器。

所以,Grails 确实使用 Gradle。

grails 命令的基本用法如下:

grails [environment]* [command name]

尤其是命令名称参数必须是预定义值之一。您可以在war 命令here 上找到文档。

gradle 命令的基本用法如下:

gradle [option...] [task...]

列出的任务参数可以是在build.gradle 脚本或插件中创建的任务的名称。所有提到的任务它们各自的任务依赖都将被执行。如果您使用Gradle War Plugin,它将生成一个war 任务,该任务也将(传递地)添加为build 任务的任务依赖项。因此,无论何时调用gradle build,都会创建一个WAR 文件。您也可以直接通过gradle war调用此任务。

编辑

我刚刚了解到,从某个版本开始,Grails 可以甚至确实使用 Gradle。我什至发现a list Grails 命令调用了哪个 Gradle 任务。根据这个列表,调用grails war 相当于调用gradle assembleassemble 任务直接依赖于war 任务。

【讨论】:

【参考方案2】:

gradle build 是一个 Gradle 生命周期任务,通常包含构建软件所需的其他任务,例如 compileJava 和其他生命周期任务,例如 assemblecheck

对于 Grails,它将构建委托给 Gradle 和 war 任务,并且不包括执行单元测试的检查生命周期。

【讨论】:

以上是关于GRAILS ---命令 grails war 和 gradle build 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Grails - 如何从 WAR 中删除 log4j

如何在 AWS Elastic Beanstalk 中为多个 grails 环境使用单个 .war?

Grails 资源:图像是 404,即使它存在于 WAR 中

Grails,无法运行WAR文件

在 Grails Spring Security Core 插件中配置会话超时,无需修改“War”

当我使用 run-app 但部署 .war 时,Grails 操作是安全的