使用Spring Boot CLI的Spring Boot Initilizr

时间:2020-02-23 14:35:48  来源:igfitidea点击:

Spring Boot Initilizr用于快速启动新的Spring Boot Maven/Gradle项目。
它生成初始项目结构并构建脚本以减少开发时间。

Spring Boot Initilizr具有以下形式:

  • 具有Web界面的Spring Boot Initilizr
  • 具有IDE/IDE插件的Spring Boot Initilizr
  • 使用Spring Boot CLI的Spring Boot Initilizr
  • 带有第三方工具的Spring Boot Initilizr

现在,我们将讨论如何使用"带有Spring Boot CLI的Spring Boot Initilizr"选项来引导Spring应用程序。

使用Spring Boot CLI的Spring Boot Initilizr

请首先阅读本文的" Spring Boot CLI基础知识"以设置Spring Boot CLI软件。
Spring Boot CLI提供了一个" spring init"命令来引导Spring应用程序。

我已经从" https://start.spring.io"下载了Spring Boot CLI zip,并将此软件安装在" D:\spring-boot-cli-1.2.3.RELEASE"。

设置以下系统变量:

PATH=D:\spring-boot-cli-1.2.3.RELEASE\bin;%PATH%

" spring init"命令

Spring Boot CLI组件中的" spring init"命令易于使用。
它使用托管在" https://start.spring.io"上的" Spring Initilizr服务"(默认情况下,我们也可以指定目标URL。
我们将在下一部分中进行讨论。
)通过使用以下命令引导Spring或者Spring Boot应用程序Spring Boot CLI组件。

" spring init"语法

spring init [options] [location]

这里的"选项"是命令选项,"位置"是我们文件系统的位置,用于创建新的Spring Boot项目。
我们将很快详细讨论命令选项。

使用" spring help init"命令查看所有可用的" spring init"命令选项,如下所示。

spring help init

" spring init"命令示例

现在,我们将通过一些合适的示例逐一探讨" spring init"命令选项。
在IDE工作区(我的工作区位于D:\RamWorkspaces \ SpringSTSBootWorkspace2)中打开CMD(命令提示符),然后执行以下示例。

Example-1:-要使用默认设置创建Spring Boot项目:

spring init

它使用默认设置在当前工作目录中创建一个新的Spring Boot Project zip文件,名为" demo.zip"。

注意:-" spring init"默认设置:

  • 默认的构建工具是" maven"。

  • 默认的Spring Initilizr服务目标URL:https://start.spring.io

  • 默认项目名称:" demo"

  • 默认行家类型:" jar"

  • 默认的Spring Boot依赖项已添加到构建脚本文件中:

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter</artifactId>
	</dependency>
		
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
</dependencies>
  • 默认的Maven工件:
<groupId>org.test</groupId>
  <artifactId>demo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>demo</name>

示例2:-使用所需的依赖关系和项目名称创建Spring Boot项目

spring init -d=web,data-jpa,jms,ws SpringMVCMavenToolProject.zip

它创建具有JPA,JMS和WS功能的打包Spring Boot WebApplication。

其中"-d"选项意味着我们可以列出所有必需的功能,并用逗号分隔值。
" SpringMVCMavenToolProject.zip"是项目名称和在当前工作目录中使用该名称创建的zip文件。

示例3:-使用Gradle Build Tool创建具有所需依赖项和项目名称的Spring Boot项目。

spring init -d=web,data-jpa,jms,ws --build=gradle -p=war SpringMVCGradleToolProject

它为Gradle构建工具创建了具有JPA,JMS和WS功能的解压缩的Spring Boot WebApplication。

  • " -d"选项表示我们可以用逗号分隔的值列出所有必需的功能。

  • " –build"选项指定所需的构建工具。
    它接受两个值:maven(Default)和gradle。

  • " SpringMVCGradleToolProject"是在当前工作目录中创建的项目名称。

  • " -p"或者" -packaging"选项指定包装类型。
    默认值为" jar"。

示例4:-创建具有Maven Build Tool所需的依赖关系和项目名称的Spring Boot项目。

spring init -d=web,jdbc,ws,cloud-aws,h2 --build=maven 
          --packaging=war SpringMVCMavenToolProject.zip

它为Maven构建工具创建具有JDBC,AWS Cloud和WS功能的打包Spring Boot WebApplication。

  • " -d"选项表示我们可以用逗号分隔的值列出所有必需的功能。

  • " –build"选项指定所需的构建工具。
    它接受两个值:maven(Default)和gradle。

  • " SpringMVCMavenToolProject"是在当前工作目录中创建的项目名称。

  • " -p"或者" -packaging"选项指定包装类型。
    默认值为" jar"。
    它接受" pom,jar,war,ear,rar,par"

示例5:-为具有指定Spring Boot和Java版本的Maven Build Tool创建具有必需的依赖关系和项目名称的Spring Boot Project。

默认情况下," spring init"命令将提取"系统变量"并采用适当的Spring Boot和Java版本。
但是,可以指定Spring Boot和Java版本。

我的Windows系统配置了Java版本= 1.8和Spring Boot版本= 1.2.3.RELEASE。
但是我想在创建新的Spring Boot项目时更改它们,如下所示。

spring init -d=web,jdbc,ws,cloud-aws,h2 --build=maven 
          --java-version=1.7
          --boot-version=1.2.5.RELEASE
          -packaging=war SpringMVCMavenToolProject.zip

它使用Java 1.7和Spring Boot 1.2.5.RELEASE为具有Maven构建工具的JDBC,AWS Cloud和WS功能创建打包的Spring Boot WebApplication。

  • " -j"或者" –java-version"选项用于指定Java版本,例如1.7、1.8等。

  • " -b"或者" –boot-version"选项用于指定Spring Boot Framework版本,例如1.2.5.RELEASE,1.3.0.M1等。

  • " -d"选项表示我们可以用逗号分隔的值列出所有必需的功能。

  • " –build"选项指定所需的构建工具。
    它接受两个值:maven(Default)和gradle。

  • " SpringMVCMavenToolProject"是在当前工作目录中创建的项目名称。

  • " -p"或者" -packaging"选项指定包装类型。
    默认值为" jar"。
    它接受" pom,jar,war,ear,rar,par"

注意:-当我们执行" spring init"命令时,我们可以观察到以下消息,该消息将连接" Spring Boot Initilizr默认服务"。

Using service at https://start.spring.io

同样,我们可以使用其他" spring init"选项进行探索。
例如," – force"强制使用更新来更新已经存在的相同项目名称,以避免错误。

注意:-我们可以提取使用" spring init"命令创建的zip文件,并将这些项目导入到我们最喜欢的Spring IDE(例如:-Spring STS Suite)中,然后继续开发与项目相关的需求。

我们将通过使用这些Spring Boot项目来开发一些应用程序,以增强我的后续文章中的某些功能。

以下部分列出了受支持的构建选项。

+--------+----------------------------------------------------------------------+
| Id     | Description                                                          |
+--------+----------------------------------------------------------------------+
| maven  | Creates a Maven project with pom.xml file for Maven build tool       |
| gradle | Creates a Maven project with build.gradle file for Gradle build tool |
+-------------------------------------------------------------------------------+

默认的构建参数值为" maven"

下一节列出了以逗号分隔的"依赖项"列表的受支持标识符的列表。

+-------------------------+-----------------------------------------------------------------------------------------------+------------------+
| Id                      | Description                                                                                   | Required version |
+-------------------------+-----------------------------------------------------------------------------------------------+------------------+
| actuator                | Production ready features to help you monitor and manage your application                     |                  |
| amqp                    | Support for the Advanced Message Queuing Protocol via spring-rabbit                           |                  |
| aop                     | Support for aspect-oriented programming including spring-aop and AspectJ                      |                  |
| batch                   | Support for Spring Batch including HSQLDB database                                            |                  |
| cache                   | Support for Spring's Cache abstraction                                                        | >= 1.3.0.M1      |
| cloud-aws               | Support for spring-cloud-aws                                                                  | >= 1.2.3.RELEASE |
| cloud-aws-jdbc          | Support for spring-cloud-aws-jdbc                                                             | >= 1.2.3.RELEASE |
| cloud-aws-messaging     | Support for spring-cloud-aws-messaging                                                        | >= 1.2.3.RELEASE |
| cloud-bus-amqp          | Support for spring-cloud-bus-amqp                                                             | >= 1.2.3.RELEASE |
| cloud-config-client     | Support for spring-cloud-config Client                                                        | >= 1.2.3.RELEASE |
| cloud-config-server     | Support for spring-cloud-config Server                                                        | >= 1.2.3.RELEASE |
| cloud-connectors        | Simplifies connecting to services in cloud platforms                                          | >= 1.2.0.RELEASE |
| cloud-eureka            | Support for spring-cloud-netflix Eureka                                                       | >= 1.2.3.RELEASE |
| cloud-eureka-server     | Support for spring-cloud-netflix Eureka Server                                                | >= 1.2.3.RELEASE |
| cloud-feign             | Support for spring-cloud-netflix Feign                                                        | >= 1.2.3.RELEASE |
| cloud-hystrix           | Support for spring-cloud-netflix Hystrix                                                      | >= 1.2.3.RELEASE |
| cloud-hystrix-dashboard | Support for spring-cloud-netflix Hystrix Dashboard                                            | >= 1.2.3.RELEASE |
| cloud-oauth2            | Support for spring-cloud-security OAuth2                                                      | >= 1.2.3.RELEASE |
| cloud-ribbon            | Support for spring-cloud-netflix Ribbon                                                       | >= 1.2.3.RELEASE |
| cloud-security          | Support for spring-cloud-security                                                             | >= 1.2.3.RELEASE |
| cloud-starter           | Support for spring-cloud-context (e.g. Bootstrap context and @RefreshScope)                   | >= 1.2.3.RELEASE |
| cloud-turbine           | Support for spring-cloud-netflix Turbine                                                      | >= 1.2.3.RELEASE |
| cloud-turbine-amqp      | Support for spring-cloud-netflix Turbine AMQP                                                 | >= 1.2.3.RELEASE |
| cloud-zuul              | Support for spring-cloud-netflix Zuul                                                         | >= 1.2.3.RELEASE |
| data-elasticsearch      | Support for the Elasticsearch search and analytics engine including spring-data-elasticsearch |                  |
| data-gemfire            | Support for the GemFire distributed data store including spring-data-gemfire                  |                  |
| data-jpa                | Support for the Java Persistence API including spring-data-jpa, spring-orm and Hibernate      |                  |
| data-mongodb            | Support for the MongoDB NoSQL Database, including spring-data-mongodb                         |                  |
| data-rest               | Support for exposing Spring Data repositories over REST via spring-data-rest-webmvc           |                  |
| data-solr               | Support for the Apache Solr search platform, including spring-data-solr                       |                  |
| derby                   | Support for the Apache Derby database (with embedded support)                                 | >= 1.2.2.RELEASE |
| devtools                | Support for Spring Boot Development Tools.                                                    | >= 1.3.0.M1      |
| freemarker              | Support for the FreeMarker templating engine                                                  |                  |
| groovy-templates        | Support for the Groovy templating engine                                                      |                  |
| h2                      | Support for the H2 database (with embedded support)                                           |                  |
| hateoas                 | Support for HATEOAS-based RESTful services                                                    | >= 1.2.2.RELEASE |
| hornetq                 | Support for Java Message Service API via HornetQ                                              |                  |
| hsql                    | Support for the HSQLDB database (with embedded support)                                       |                  |
| integration             | Support for common spring-integration modules                                                 |                  |
| jdbc                    | Support for JDBC databases                                                                    |                  |
| jersey                  | Support for the Jersey RESTful Web Services framework                                         | >= 1.2.0.RELEASE |
| jta-atomikos            | Support for JTA distributed transactions via Atomikos                                         | >= 1.2.0.M1      |
| jta-bitronix            | Support for JTA distributed transactions via Bitronix                                         | >= 1.2.0.M1      |
| mail                    | Support for javax.mail                                                                        | >= 1.2.0.RC1     |
| mobile                  | Support for spring-mobile                                                                     |                  |
| mustache                | Support for the Mustache templating engine                                                    | >= 1.2.2.RELEASE |
| mysql                   | Support for the MySQL jdbc driver                                                             |                  |
| postgresql              | Support for the PostgreSQL jdbc driver                                                        |                  |
| redis                   | Support for the REDIS key-value data store, including spring-redis                            |                  |
| remote-shell            | Support for CRaSH                                                                             |                  |
| security                | Support for spring-security                                                                   |                  |
| social-facebook         | Support for spring-social-facebook                                                            |                  |
| social-linkedin         | Support for spring-social-linkedin                                                            |                  |
| social-twitter          | Support for spring-social-twitter                                                             |                  |
| thymeleaf               | Support for the Thymeleaf templating engine, including integration with Spring                |                  |
| vaadin                  | Support for Vaadin                                                                            |                  |
| velocity                | Support for the Velocity templating engine                                                    |                  |
| web                     | Support for full-stack web development, including Tomcat and spring-webmvc                    |                  |
| websocket               | Support for websocket development with Tomcat                                                 |                  |
| ws                      | Support for Spring Web Services                                                               |                  |
+-------------------------+-----------------------------------------------------------------------------------------------+------------------+

从该列表中,我们已经在示例中使用了" web,data-jpa,jms,ws"。
也请尝试使用其他功能或者依赖项来开发一些示例。