使用 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选项:
- 依赖项 - 例如网络、安全、data-jpa 等
- 项目类型 - 例如专家,gradle
- 参数 - 例如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
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选项:
- 依赖项 - 例如网络、安全、data-jpa 等
- 项目类型 - 例如专家,gradle
- 参数 - 例如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