Spring IO Platform 简介

Spring IO Platform框架简单来说就是一个版本号兼容系统,它将常用第三方类库的兼容的版本组织起来。只要我们在项目中引用了Spring IO Platform,就不需要为这些第三方类库设置版本号了,Spring IO Platform会自动帮我们设置所有兼容的版本号。本文参考自官方文档,如果需要查阅详细信息,请直接看原文即可。

引入类库

使用Maven

使用Maven的话,在pom.xml中修改为类似这样的。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>your-application</artifactId>
    <version>1.0.0-SNAPSHOT</version>

    <!-- 添加以下一段-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>io.spring.platform</groupId>
                <artifactId>platform-bom</artifactId>
                <version>Brussels-SR3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!-- Dependency declarations -->

</project>

或者将设置Spring IO Platform为父项目也行。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>your-application</artifactId>
    <version>1.0.0-SNAPSHOT</version>

    <parent>
        <groupId>io.spring.platform</groupId>
        <artifactId>platform-bom</artifactId>
        <version>Brussels-SR3</version>
        <relativePath/>
    </parent>

    <!-- Dependency declarations -->

</project>

设置完成后,以后添加依赖项就不需要指定版本好了。可以像下面这样添加依赖。

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <!-- 没有版本号 -->
    </dependency>
</dependencies>

使用Gradle

如果用Gradle的话,就稍微复杂一点了。因为Gradle没有dependencyManagement这么一个功能,所以还需要额外的插件。总之,将build.gradle文件修改为类似这样即可。

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'io.spring.gradle:dependency-management-plugin:1.0.0.RELEASE'
    }
}

apply plugin: 'io.spring.dependency-management'

repositories {
    mavenCentral()
}

dependencyManagement {
    imports {
        mavenBom 'io.spring.platform:platform-bom:Brussels-SR3'
    }
}

然后,声明依赖就不需要版本号了。

dependencies {
    compile 'org.springframework:spring-core'
}

覆盖版本号

有时候可能需要覆盖Spring IO Platform中的版本号,改为使用我们自己指定的版本号。如果使用Maven的话,在pom.xml文件的properties节点中修改版本号。

<properties>
    <foo.version>1.1.0.RELEASE</foo.version>
</properties>

如果使用Gradle的话,在build.gradle中添加ext属性即可。

ext['foo.version'] = '1.1.0.RELEASE'

或者

ext {
foo.version = '1.1.0.RELEASE'
}

也可以在gradle.properties文件中设置。

foo.version=1.1.0.RELEASE

已知问题

由于谷歌Guava类库的广泛使用,引用不同的项目时可能存在不兼容情况。这时候需要我们手动指定合适的版本号以保证项目能够正常运行。

如果想详细了解Spring IO Platform的版本号,可以查看官方文档附录

示例程序

其实这篇文章到这里就可以结束了,因为Spring IO Platform实际上确实也没有多少东西要讲。

这是我的一个小小例子,用Spring IO Platform和Gradle构建的一个Spring MVC程序。下面是对应的build.gradle文件。可以看到由于使用了Spring IO Platform,所以这里的依赖项全部没有指定版本号。

group 'yitian.study'
version '1.0-SNAPSHOT'

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'io.spring.gradle:dependency-management-plugin:1.0.0.RELEASE'
    }
}

apply plugin: 'java'
apply plugin: 'war'
apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin'
apply plugin: 'io.spring.dependency-management'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    testCompile group: 'junit', name: 'junit'
    compile 'org.springframework:spring-webmvc'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-logging'
}

dependencyManagement {
    imports {
        mavenBom 'io.spring.platform:platform-bom:Brussels-SR3'
    }
}

从IDE的提示可以看到,所有版本号都由Spring IO Platform正确处理了。

完整的例子在这里,虽然我感觉大部分不需要看这个。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏惨绿少年

NFS启动时报错Linux NFS:could not open connection for tcp6

1.1 启动时出现的错误 [root@znix ~]#/etc/init.d/nfs start Shutting down NFS daemon:     ...

2240
来自专栏加米谷大数据

Flume的高可靠,高性能和高扩展性

Flume 是Apache旗下的一款开源、高可靠、高扩展、容易管理、支持客户扩展的数据采集系统。 Flume使用JRuby来构建,所以依赖Java运行环境。

1042
来自专栏dalaoyang

SpringBoot的第一个web项目

这一节主要是讲springboot搭建简单的web项目。 首先pom文件新增spring-boot-starter-web依赖,pom文件如下所示 <?xml ...

3047
来自专栏代码拾遗

Spring Cloud 教程 - Eureka Server

将groupId 为 org.springframework.cloud,artifactId 为spring-cloud-starter-netflix-eu...

2054
来自专栏nice_每一天

CentOS下安装JDK的三种方法

由于各Linux开发厂商的不同,因此不同开发厂商的Linux版本操作细节也不一样,今天就来说一下CentOS下JDK的安装:

2242
来自专栏Android相关

Gradle For Android(8)--建立持续集成

Continuous Integration(CI)持续集成可以在团队中每天构建非常多次。每一次自动构建都可以验证最新Push到主仓库的提交。这种方式可以帮助我...

1673
来自专栏用户画像

Ajax GET请求后台数据

1、前台ftl文件,通过URL请求后台数据,返回数据(Json格式)封装在data中

1573
来自专栏流柯技术学院

CentOS下安装JDK的三种方法

//安装完之后,默认的安装目录是在: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64

5253
来自专栏栗霖积跬步之旅

关于打包后提示无法连接到mongodb的情况

昨天晚上要和前端联调。 打完jar包后发现无法连接到测试环境的数据库。 就很尴尬,最后发现问题在于mongodb的URI写错了: 正确的URI格式:mongod...

3795
来自专栏叔叔的博客

SpringCloud配置中心集群搭建

一、简介 为了方便配置文件统一管理,需要分布式配置中心组件,在springcloud中,使用配置中心。 可以放在本地,也可以放在远程git或者svn。 服务数量...

3495

扫码关注云+社区

领取腾讯云代金券