使用Spring Boot CLI的Spring Boot Initilizr
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"。
也请尝试使用其他功能或者依赖项来开发一些示例。