# 命令行的使用

Grails 集成了强大的构建系统Gradle。

基本使用场景(语法格式)是:

grails <<environment>> * <<command name>>

Grails在以下目录中搜索要执行的脚本:

  • USER_HOME/.grails/scripts
  • PROJECT_HOME/src/main/scripts/
  • PROJECT_HOME/plugins/*/scripts
  • GRAILS_HOME/scripts

如果找到多个匹配项,Grails将向你提供执行哪一个的选择

可以使用可选的环境参数指定在其中执行命令的环境,也可以使用内置的环境名称之一:

grails dev run-app
grails test run-app
grails prod run-app

如果名称不是三个标准名称之一,则使用-D参数:

grails -Dgrails.env=uat run-app

有关详细信息,请参阅命令行上的用户指南部分。

# 命令行

Grails 3.0的命令行与以前的Grails版本有很大的不同,它提供了一些api,用于调用Gradle执行与构建相关的任务,以及执行代码生成。

当你输入:

grails <<command name>>

Grails基于当前应用程序的概要文件搜索概要文件存储库。如果配置文件是用于web应用程序的,则从web配置文件及其继承的基本配置文件读取命令。

当你输下一下命令:

grails run-app

将从应用程序的配置文件搜索命令:

  • PROJECT_HOME/src/main/scripts/run-app.groovy
  • [profile]/commands/run-app.groovy
  • [profile]/commands/run-app.yml

要获取所有命令的列表以及有关可用命令的一些帮助,可以输入以下命令:

grails help

输出Grails的使用介绍和命令列表:

| Examples:
$ grails dev run-app
$ grails create-app books

| Available Commands (type grails help 'command-name' for more info):
| Command Name                          Command Description
----------------------------------------------------------------------------------------------------
create-app                              Creates an application
create-plugin                           Creates a plugin
create-profile                          Creates a profile
help                                    Prints help information for a specific command
list-profiles                           Lists the available profiles
profile-info                            Display information about a given profile
  • 有关各个命令的详细信息,请参阅《参考指南》的“快速参考”菜单中的命令行参考

# 参数

grails命令是基于gradle,因此会有出乎意料的报错。例如,在执行grails -Dapp.foo=bar run-app the app。foo系统的配置可能不会对应用程序起作用。这是因为bootRun在系统的配置文件build.gradle中。要使这个工作,您可以配置所有系统配置文件bootRun在build.gradle,如下:

bootRun{
    systemProperties System.properties
}

或者,你仅仅想通过一个简单的配置,你可以使用任意前缀为系统属性添加前缀并且配置bootRun,如下:

bootRun{
    bootRun {
        systemProperties System.properties.inject([:]){acc,item-> item.key.startsWith('boot.')?acc << [(item.key.substring('boot.'.length())):item.value]:acc }
    }
}

应用程序和JVM参数也可以在bootRun中指定

bootRun{
    bootRun {
        jvmArgs('-Dspring.output.ansi.enabled=always')
        args('--app.foo=bar','--app.bar=foo') // Override the `app.foo` and `app.bar` config options (`grailsApplication.config`)
    }
}

# 非交互模式

当您手动运行脚本,脚本提示你时,您可以回答问题并继续运行脚本。但是,当您将脚本作为自动化流程的一部分运行时,例如连续集成构建服务器,就没有办法“回答”这些问题。因此,您可以将--non-interactive开关传递给script命令,告诉Grails接受任何问题的默认答案,例如是否安装缺少的插件。

比如:

grails war --non-interactive

文档完善中...