深入Spring Boot (二):Spring Boot对构建系统的支持

Spring Boot强烈建议开发者在使用Spring Boot的时候选择支持依赖管理的构建系统,以获取更好的使用支持,比如Maven或Gradle。因为Maven和Gradle的实现不同,所以Spring Boot对它们的使用支持也不同。

Maven

每次Spring Boot新版本发布时都会提供一个它所支持的Spring模块及第三方库版本列表,例如Spring Boot1.5.10版本支持的库列表可以在 github.com/spring-proj…上查询,。因为Spring Boot每次版本发布都会关联一个Spring库的基础版本,所以官方强烈不建议自己指定Spring库版本。

新建项目可以使用Maven通过继承spring-boot-starter-parent项目来获取合适的默认设置,即在pom.xml中添加如下配置。

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.10.RELEASE</version>
    </parent>复制代码

查看spring-boot-starter-parent项目的pom.xml文件,可以看到它继承了spring-boot-dependencies项目,也就是说新建项目间接继承了spring-boot-dependencies项目。

从上图可以发现spring-boot-starter-parent项目配置了默认代码编码为UTF-8、编译级别为Java1.6,这样的配置同样作用于继承它的项目。

查看spring-boot-dependencies项目的pom.xml文件,可以看到文件中配置了很多依赖库的版本定义,也就是说在新建项目的pom.xml中添加这些依赖可以省略版本号配置,例如添加activemq-client依赖。


继续查看spring-boot-starter-parent项目的pom.xml文件,可以看到它配置了构建时对application.properties和application.yml的筛选。


同样在spring-boot-starter-parent项目的pom.xml文件也配置了可用插件。


所以,综上可以看出继承spring-boot-starter-parent项目可以获取以下默认特性:
1.默认使用Java1.6进行编译;
2.默认代码编码为UTF-8;
3.新建项目的pom文件可以省略依赖库的<version>标签,例如添加activemq依赖的时候,可以不写版本号;
4.恰到好处的资源过滤;
5.恰到好处的插件配置,如exec插件;
6.恰到好处的对application.properties和application.yml进行筛选;

通过继承的方式可以很方便的进行依赖版本管理,即使用默认的依赖版本,当然也可以更改这些依赖的版本号,例如要想升级activemq到5.15.0版本,可以在新建项目的pom.xml中添加如下配置。

    <properties>
        <activemq.version>5.15.0</activemq.version>
    </properties>复制代码

不是每个人都喜欢使用继承spring-boot-starter-parent项目方式,或者公司有自己的标准parent,所以也可以选择不继承spring-boot-starter-parent项目,但是你又想继续使用依赖管理的特性,可以将如下配置添加到新建项目的pom.xml中。

    <dependencyManagement>
        <dependencies>
            <dependency>
                <!-- Import dependency management from Spring Boot -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.5.10.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>复制代码
其实就是把spring-boot-dependencies项目pom.xml中的配置导入到新建项目的pom.xml中。如果此时要想升级activemq到5.15.0版本,需要在项目的dependencyManagement节点中,在spring-boot-dependencies实体前插入一个dependency 节点,具体配置如下。

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>activemq-client</artifactId>
                <version>5.15.0</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>

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

Gradle

Spring Boot对Gradle的使用支持非常友好,使用Gradle可以直接在它的dependencies节点处添加需要的starters。跟Maven不同的是,没有"parent"配置,也就不能共享配置。但是,Spring Boot提供的spring-boot插件也提供了依赖管理的能力,它允许你省略Spring Boot管理的任何依赖的version版本号,例如如下配置。

plugins {
    id 'org.springframework.boot' version '1.5.10.RELEASE'
    id 'java'
}

group 'myproject'
version '1.0-SNAPSHOT'

repositories {
    jcenter()
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("org.springframework.boot:spring-boot-starter-test")
}复制代码

当需要更改这些依赖的默认版本号时也很简单,只需要添加版本号即可,例如升级activemq到5.15.0版本配置如下。

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.apache.activemq:activemq-client:5.15.0")
    testCompile("org.springframework.boot:spring-boot-starter-test")
}复制代码

总结

虽然Spring Boot对Maven和Gradle都做了很好的支持,但是从上面介绍可以看出使用Gradle相对Maven简便很多,所以如果你在犹豫使用哪一个构建工具,推荐使用Gradle。 

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值