Action Files

动作文件为 user defined commands 提供动力。这些文件以 YAML 格式编写,并存储在定义命令的目录中。 有关用户自定义命令的目录结构的更多信息,请参阅 Action file Structure 中的文档。 每个文件都包含一系列操作,这些操作将按它们在文件中定义的顺序运行。操作执行一个通常是必需的任务,以帮助开发人员向他们当前的项目中添加或修改代码和配置。操作可以运行另一个可执行应用程序,这有助于自动执行开发任务,例如使用供应商的 CLI 应用程序进行部署。 一个目录中可以有多个 Action 文件,并且会按字母顺序对其进行评估。

评估顺序可能会在未来版本中发生变化。

目前,仅有少数几种操作,但已有许多原型的操作即将推出。 操作的列表如下:

  • generate - 创建新文件。

  • inject - 将文本注入现有文件中的特定位置。

  • inject-maven-dependency - 将从属项条目附加到当前 pom.xml 文件。

  • inject-maven-plugin - 将 Maven 插件条目附加到当前 pom.xml 文件。

  • inject-maven-dependency-management - 将从属项管理条目附加到当前 pom.xml 文件。

  • inject-maven-repository - 将存储库条目附加到当前 pom.xml 文件。

  • inject-properties - 将属性附加到 Java 属性文件。

  • exec - 运行另一个程序。

An Introductory Example

CLI command new 命令创建一个简单的用户定义命令,我们可以使用此命令演示 Action 文件的组件。

spring command new --commandName hello --subCommandName create
Created user defined command /home/testing/rest-service/.spring/commands/hello/create

目录结构为:

$ tree .spring
.spring
└── commands
    └── hello
        └── create
            ├── command.yaml
            └── hello.yaml

command.yaml 的内容(如下所示)定义了一个名为 greeting 的命令行参数。此参数用于 hello.yaml 操作文件中。

command:
  description: Generate a new file with a hello message
  options:
    #
    - name: greeting
      description: who or what to say hello to
      dataType: string
      defaultValue: World
      inputType: text     # TEXT
```

hello.yaml 的内容为:

actions:
  - generate:
      to: hello.txt
      text: Hello {{greeting}} on {{os-name}}.

Understanding the actions file

为帮助您理解如何使用 YAML 语法创建 Action 文件,本部分将解释每行简介示例:

Code Explanation.

actions:

将所有操作组合在一起。

generate:

要执行的操作类型。例如,此操作类型生成文件。

to:

在文件系统中生成文件的位置。

text:

要生成的文件的内容。

Running the User-defined Command

$ spring hello create --greeting World!
Generated /home/testing/rest-service/hello.txt

$ cat hello.txt
Hello World! on Linux.

Next Steps