《官方直译版》6.使用Spring Boot-构建系统

强烈建议您选择支持依赖关系管理且可以使用发布到“Maven Central”存储库的工件的构建系统 。我们建议您选择Maven或Gradle。可以使Spring Boot与其他构建系统(例如Ant)一起使用,但它们并没有得到特别好的支持.

(1). 依赖管理

Spring Boot的每个版本都提供了它支持的依赖项的策划列表.实际上,你不需要为构建配置中的任何这些依赖项提供版本,因为Spring Boot会为你管理.升级Spring引导时,这些依赖项也会以一致的方式升级.
如果需要,你任然可以知道版本并覆盖Spring boot的建议

精选列表包含你可以使用Spring Boot的所有Spring models以及精选的第三方库列表.该列表以标准(spring-boot-dependencies)的形式提供,可与[Maven3Gradle一起使用.

Spring Boot的每个版本都与Spring框架的基本版本相关联.强烈建议你不要使用指定其版本.

(2) maven

MAven用户可以继承spring-boot-starter-parent项目以获得合理的默认值.父项目提供以下功能:

  • java 1.8作为默认的编译器级别
  • UTF-8源编码
  • 一个依赖管理部分,从Spring启动依赖性继承POM,管理公共依赖的版本.此依赖关系允许你在自己的POM中使用时省略<version>标记
  • 使用repackage执行ID执行repackage目标
  • 明智的资源过滤.
  • 明智的插件配置(exec插件git提交ID、和shade)
  • application.propertiesapplication.yml的合理资源过滤,包含特定于配置文件的文件(例如,application-dev.propertiesapplication-dev.yml)
    由于application.properties好application.yml文件接收Spring样式占位符(${…}),因此Maven过滤更改为使用@…@占位符.(你可以通过设置名为resource.delimiter的属性来覆盖它.)
(2).1 继承Starter parent

要将项目配置为从spring-boot-starter-parent继承,请按以下方式设置parent:

<!-- Inherit defaults from Spring Boot -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.1.RELEASE</version>
</parent>

您应该只需要在此依赖项上指定Spring Boot版本号。如果导入其他启动器,则可以安全地省略版本号
通过该设置,你还可以通过覆盖自己项目中的属性来覆盖单个依赖项.例如,要升级到另一个Spring数据发布列表,你还可以将以下内容添加到pom.xml:

<properties>
    <spring-data-releasetrain.version>Fowler-SR2</spring-data-releasetrain.version>
</properties>

检查spring-boot-dependencies pom以获取支持的属性列表.

(2).2 在没有父POM的情况下使用Spring Boot

不是每个人都喜欢继承spring-boot-starter-parent POM,你可能拥有自己需要使用的公司标准父级,或者你可能希望明确声明所有Maven配置.

如果你不想使用spring-boot-starter-parent,你任然可以通过使用scope=import依赖项来保持依赖项管理(但不是插件管理)的好处,如下所示:

<dependencyManagement>
    <dependencies>
        <dependency>
            <!-- Import dependency management from Spring Boot -->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.1.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

如上所述,前面的示例设置不允许你使用属性覆盖单个依赖项.要活的相同的效果,你需要在spring-boot-dependencies条目之前在项目的dependencyManagement中添加条目.例如,要升级到另一个Spring数据发布咧,你可以将以下元素添加到pom.xml:

<dependencyManagement>
    <dependencies>
        <!-- Override Spring Data release train provided by Spring Boot -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-releasetrain</artifactId>
            <version>Fowler-SR2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.1.1.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

在前面的示例中,我们知道了BOM,但是可以以相同
的方式覆盖任何依赖关系类型

(2).3 使用Spring Boot Maven插件

Spring Boot包含了一个Maven插件,可以将maven项目打包成可执行jar.如果要使用插件,请将该插件添加到<plugins>部分,如以下示例所示:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

如果您使用Spring Boot启动程序父pom,则只需添加插件。除非您要更改父级中定义的设置,否则无需对其进行配置。

(3) Gradle

要了解如何将Spring Boot与Gradle一起使用,请参阅Spring Boot的Gradle插件的文档:

(4) Ant

可以使用Apache Ant + lvy构建一个Spring Boot项目.spring-boot-antlib "AntLib"模块也可以用于帮助Ant创建可执行jar.

要声明依赖项,典型的ivy.xml文件类似于以下示例:

<ivy-module version="2.0">
    <info organisation="org.springframework.boot" module="spring-boot-sample-ant" />
    <configurations>
        <conf name="compile" description="everything needed to compile this module" />
        <conf name="runtime" extends="compile" description="everything needed to run this module" />
    </configurations>
    <dependencies>
        <dependency org="org.springframework.boot" name="spring-boot-starter"
rev="${spring-boot.version}" conf="compile" />
    </dependencies>
</ivy-module>

典型的build.xml类似于以下示例:

<project
    xmlns:ivy="antlib:org.apache.ivy.ant"
    name="myapp" default="build">
    xmlns:spring-boot="antlib:org.springframework.boot.ant"
<property name="spring-boot.version" value="2.1.1.RELEASE" />
    <target name="resolve" description="--> retrieve dependencies with ivy">
        <ivy:retrieve pattern="lib/[conf]/[artifact]-[type]-[revision].[ext] />
    </target>
    <target name="classpaths" depends="resolve">
        <path id="compile.classpath">
        <fileset dir="lib/compile" includes="*.jar" />
        </path>
    </target>
    <target name="init" depends="classpaths">
        <mkdir dir="build/classes" />
    </target>
    <target name="compile" depends="init" description="compile">
        <javac srcdir="src/main/java" destdir="build/classes" lasspathref="compile.classpath" />
    </target>
    <target name="build" depends="compile">
        <spring-boot:exejar destfile="build/myapp.jar" classes="build/lasses">
            <spring-boot:lib>
                <fileset dir="lib/runtime" />
            </spring-boot:lib>
        </spring-boot:exejar>
    </target>
</project>

如果您不想使用spring-boot-antlib模块,请参见 第91.9节“从Ant构建可执行文件,而不使用spring-boot-antlib” “操作方法”。

(5) Starters

Starters是一组方便的依赖描述符,你可以在应用程序中包含这些描述符.你可以获得所需的所有Spring和相关技术的一站式服务,而无需搜索示例代码和复制粘贴依赖描述符的负载.例如,如果要使用Spring和JPA进行数据库访问,请在该项目中包含spring-boot-starter-data-jpa依赖项.

启动器包含许多依赖项,这些依赖项是使项目快速启动解运行所需的依赖项,以及一组受支持的托管传递依赖项.

  • 命名模式

所有官方starter都遵循类似的命名模式;spring-boot-starter-*,其中*是一种特殊类型的应用程序。此命名结构旨在帮助您找到启动器。许多IDE中的Maven集成允许您按名称搜索依赖项。例如,安装了适当的Eclipse或STS插件后,可以在POM编辑器中按ctrl-space并输入“spring-boot-starter”以获取完整列表。

正如“创建自己的初学者 ”部分所述,第三方启动者不应以spring-boot开头,因为它是为官方Spring Boot工件保留的。相反,第三方启动器通常以项目名称开头。例如,名为thirdpartyproject的第三方启动项目通常被命名为thirdpartyproject-spring-boot-starter

以下应用程序启动程序由org.springframework.boot组下的Spring boot提供:

表13.1. Spring Boot应用程序启动器

名称描述POM
spring-boot-starter核心启动器,包括自动配置支持,日志记录和YAMPOM
spring-boot-starter-activemq使用Apache ActiveMQ进行JMS消息传递的入门者POM
spring-boot-starter-amqp使用Spring AMQP和Rabbit MQ的入门者POM
spring-boot-starter-aop使用Spring AOP和AspectJ进行面向方面编程的入门者POM
spring-boot-starter-artemis使用Apache Artemis进行JMS消息传递的入门者POM
spring-boot-starter-batch使用Spring批处理的初学者POM
spring-boot-starter-cache使用Spring Framework的缓存支持的初学者POM
spring-boot-starter-cloud-connectors使用Spring云连接器的初学者简化了与Cloud Foundry和Heroku等云平台中的服务的连接POM
spring-boot-starter-data-cassandra使用Cassandra分布式数据库和Spring数据的初学者CassandraPOM
spring-boot-starter-data-cassandra-reactive使用Cassandra分布式数据库和Spring数据Cassandra Reactive的入门者POM
spring-boot-starter-data-couchbase使用Couchbase面向文档的数据库和Spring Data Couchbase的入门者POM
spring-boot-starter-data-couchbase-reactive使用Couchbase面向文档的数据库和Spring Data Couchbase Reactive的入门者POM
spring-boot-starter-data-elasticsearch使用Elasticsearch搜索和分析引擎以及Spring Data Elasticsearch的初学者POM
spring-boot-starter-data-jdbc使用Spring数据JDBC的入门者POM
spring-boot-starter-data-jpa使用Spring Data JPA和Hibernate的初学者POM
spring-boot-starter-data-ldap使用Spring数据LDAP的入门者POM
spring-boot-starter-data-mongodb使用MongoDB面向文档的数据库和Spring Data MongoDB的初学者POM
spring-boot-starter-data-mongodb-reactive使用MongoDB面向文档的数据库和Spring Data MongoDB Reactive的入门者POM
spring-boot-starter-data-neo4j使用Neo4j图形数据库和Spring数据Neo4j的入门者POM
spring-boot-starter-data-redis使用Spring数据Redis和Lettuce客户端使用Redis键值数据存储的入门者POM
spring-boot-starter-data-redis-reactive使用Redis数据Redis被动和Lettuce客户端的Redis键值数据存储的入门者POM
spring-boot-starter-data-rest使用Spring Data REST通过REST公开Spring数据存储库的入门者POM
spring-boot-starter-data-solr使用带有Spring Data Solr的Apache Solr搜索平台的初学者POM
spring-boot-starter-freemarker使用FreeMarker视图构建MVC Web应用程序的入门者POM
spring-boot-starter-groovy-templates使用Groovy模板视图构建MVC Web应用程序的入门者POM
spring-boot-starter-hateoas使用Spring MVC和Spring HATEOAS构建基于超媒体的RESTful Web应用程序的入门者POM
spring-boot-starter-integration使用Spring Integration的入门者POM
spring-boot-starter-jdbc将JDBC与HikariCP连接池一起使用的入门者POM
spring-boot-starter-jersey使用JAX-RS和Jersey构建RESTful Web应用程序的入门者。替代spring-boot-starter-webPOM
spring-boot-starter-jooq使用jOOQ访问SQL数据库的初学者。替代spring-boot-starter-data-jpa或spring-boot-starter-jdbcPOM
spring-boot-starter-json阅读和写作json的初学者POM
spring-boot-starter-jta-atomikos使用Atomikos进行JTA交易的入门者POM
spring-boot-starter-jta-bitronix使用Bitronix进行JTA事务的入门者POM
spring-boot-starter-mail使用Java Mail和Spring Framework的电子邮件发送支持的入门者POM
spring-boot-starter-mustache使用Mustache视图构建Web应用程序的入门者POM
spring-boot-starter-oauth2-client使用Spring安全性OAuth2 / OpenID Connect客户端功能的入门级产品POM
spring-boot-starter-oauth2-resource-server使用Spring安全性OAuth2资源服务器功能的入门者POM
spring-boot-starter-quartz使用Quartz调度程序的入门者POM
spring-boot-starter-security使用Spring安全性的入门者POM
spring-boot-starter-test用于测试包含JUnit,Hamcrest和Mockito等库的Spring Boot应用程序的入门者POM
spring-boot-starter-thymeleaf使用Thymeleaf视图构建MVC Web应用程序的入门者POM
spring-boot-starter-validation使用Java Bean验证与Hibernate Validator的初学者POM
spring-boot-starter-web使用Spring MVC构建Web(包括RESTful)应用程序的入门者。使用Tomcat作为默认嵌入式容器POM
spring-boot-starter-web-services使用Spring Web服务的入门者POM
spring-boot-starter-webflux使用Spring Framework的Reactive Web支持构建WebFlux应用程序的初学者POM
spring-boot-starter-websocket使用Spring Framework的WebSocket支持构建WebSocket应用程序的入门者POM

除应用程序启动器外,还可以使用以下启动器添加生产就绪功能:

表13.2 Spring Boot Production Starters

名称描述POM
spring-boot-starter-actuator使用Spring Boot的Actuator的启动器,它提供生产就绪功能,帮助您监控和管理您的应用程序POM

最后,Spring Boot还包括以下可用于排除或交换特定技术方面的启动器:

表13.3. Spring Boot 技术先发着

名称描述POM
spring-boot-starter-jetty使用Jetty作为嵌入式servlet容器的入门。替代spring-boot-starter-tomcatPOM
spring-boot-starter-log4j2使用Log4j2进行日志记录的入门。替代spring-boot-starter-loggingPOM
spring-boot-starter-logging使用Logback进行日志记录的入门。默认日志启动器POM
spring-boot-starter-reactor-netty使用Reactor Netty作为嵌入式响应式HTTP服务器的入门者。POM
spring-boot-starter-tomcat使用Tomcat作为嵌入式servlet容器的入门者。使用的默认servlet容器启动器spring-boot-starter-webPOM
spring-boot-starter-undertow使用Undertow作为嵌入式servlet容器的入门者。替代spring-boot-starter-tomcatPOM

有关其他社区贡献的启动器的列表,请参阅GitHub上spring-boot-starters模块中的 README文件

转载请声明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姑苏_IT

创作不易,谢你打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值