使用 Spring Boot CLI 初始化项目时,如何指定 "parameters"(例如语言 = groovy)?

When initializing a project with the Spring Boot CLI, how do you specify "parameters" (e.g. language = groovy)?

Groovy 和 Spring 引导 CLI

我有兴趣在 Spring Boot 中使用强大的 Groovy 支持来快速制作动态类型检查有用的东西的原型(例如,吞噬任意 JSON 数据)。

我已经安装了 GVM, and the Spring Boot CLI,并且想使用后者的 spring init 命令来创建骨架项目,其中 Groovy 是主要语言。不同之处只是一个额外的依赖项和一些构建插件添加到 Maven 或 Gradle 构建文件......但是,不用查找所有这些并从某个地方剪切-n-粘贴它仍然很好。

支持 CLI 的 Web 服务中的可用选项

使用支持 Spring Boot CLI 的基于网络的 http://start.spring.io 服务时,您可以通过简单地选择 "Groovy" 而不是 "Java" 在 "Language" 下拉列表中。您可以看到 CLI 也理解此选项。如果您 运行 spring init --list 列出所有可能的选项,那么您将在 "Parameters" 部分看到一个 "language" 选项(默认值为 "java").

spring init --list命令实际上显示三个table选项:

  1. 依赖项 - 例如网络、安全、data-jpa 等
  2. 项目类型 - 例如专家,gradle
  3. 参数 - 例如groupId、artifactId 等...和 ​​language

CLI 是否公开了所有这些可用选项?

如果你 运行 spring help init,你可以看到依赖项是用 -d--dependencies 标志指定的。项目类型使用 -t--type 标志指定。

但是,似乎没有用于设置 "parameters" table 中的任何选项的标志。有一些随机标志用于设置一些可能的参数,其中大部分甚至拼写都不相同(例如 --boot-version 代表 bootVersion 参数,--java-version 代表 javaVersion参数)。但是,我没有看到任何用于设置 "language"... 的支持标志,或者就此而言,即使是最常见的自定义标志,如 "groupId"、"artifactId" 等

我想也许 "parameters" 的意思可能正是……完全不使用标志的裸参数。但是,CLI 似乎采用的唯一此类裸参数是创建骨架项目的位置。

这是疏忽吗?我知道 Spring Boot 仍在成熟中,CLI 似乎并不是其最广泛采用的功能。因此,也许它只是通过公开的一组固定参数快速组合在一起,而不是像他们为 "dependencies" 和 "types" 那样考虑可扩展的 "parameter" 标志。还是我遗漏了什么,并且可以通过 CLI 设置 "parameters" table?

中的其他选项

简短的回答是:没有。 CLI 命令不会公开 Spring Initializr 的所有属性(它从未公开过)。我不确定这是疏忽还是我们在等待有人投诉。

无论哪种方式,添加对其他属性的支持都没有错,我已经为您创建了 #2793

关于拼写,这是为了与其他命令的 CLI 参数样式保持一致。

这可以使用 --language groovy 来完成,即 spring --build gradle --language groovy appName