Comments on the Approach

Spring 小组创建了两种创建新项目的方法和一种修改现有项目的方法。我们发现最佳方法是使用 Spring Initializr 生成项目,然后再使用 boot add 命令在项目中添加内容。以下各节解释了为什么这是最佳方法:

Initializr

创建新的 Spring Boot 项目的常见方法是使用 Initializr,网址为 [role="bare"][role="bare"]https://start.spring.io。Spring CLI 为您提供一个与 Initializr 交互的命令。请参阅 Initializr,它还提供了创建新项目的其他方法,并解决了使用已有项目的 day-2 代码或配置用例。

Using Boot New

boot new 命令允许您从位于源代码存储库中的现有项目创建一个新项目。boot new 命令允许您指定一小部分选项以根据需要进行定制(例如更改包名称),但它不提供 Initializr 所提供的依赖项选择。

boot new 的方法是克隆包含完全有效的代码和配置的现有存储库以及项目的依赖项。这种方法可以让您或团队成员轻松创建多个项目原型,因为它们是源代码存储库中的常规 Spring 项目,可以通过 CI 流程来验证它们是否有效。请参阅 Creating New Projects 了解更多信息。

Using Boot Add

然后,在进行初始项目创建之后,您可以根据需要使用 boot add 命令添加其他代码和依赖项。此命令将现有项目智能合并到当前项目中。与 boot new 命令一样,现有项目是源代码存储库中的常规 Spring 项目,可以通过 CI 流程进行编译和验证。请参阅 Guide to "boot add" 了解更多信息。

Templating Code and Configuration

或者,您可以使用用户定义的命令添加其他代码和依赖项,这些命令依赖于使用模板引擎来创建代码和配置。请参阅 Guide to user defined commands 了解更多信息。使用模板引擎并让用户轻松参与调用这些模板的命令的方法受到 hygen 项目的启发。

Conclusion

虽然添加其他代码和依赖项的两种方法有各自的用例,但在从头开始创建新项目时,我们发现从正在进行的项目开始会更容易。您不仅可以获得公司所需的已批准依赖项,还可以获得代码、配置和测试。这是一个起点,消除了繁琐的工作和选择依赖项以及从教程中复制代码的不确定性。通常,这些教程非常基础,不遵循常见的最佳实践惯例,也没有测试。

通过模板创建新项目可能具有挑战性。我们认为,为新项目创建 Java 代码模板比从现有工作项目克隆新项目更困难。创建模板、运行模板,然后编译生成的结果项目的循环很脆弱。但是,我们发现创建更小的代码和配置块更适合模板方法,例如,使用 spring controller new 将控制器添加到当前项目或使用 spring feature new 添加一些文件,例如使用 @Controller@Service@Repository 注释的类。

您的经验可能有所不同,但两种类型的代码生成都可在 Spring CLI 中使用。