Maven最佳实践之一个好的parent依赖基础

 更新时间:2018年12月25日 11:19:22   作者:isea533  
今天小编就为大家分享一篇关于Maven最佳实践之一个好的parent依赖基础,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

使用parent 控制依赖版本是很常见的事。

如果你有过控制依赖版本的这种经历,你可能就会遇到过第三方版本之间的冲突,本文不介绍如何解决冲突,但是会提供给你一个基本不存在冲突的基础依赖。

得益于 Spring ,尤其是 Spring Boot 对第三方集成提供的 starter。Spring Boot 对可能用到的第三方依赖提供了很好的版本控制,我们就依靠 Spring 提供的 bom 和 dependencies 来实现我们自己的基础依赖。

由于 Spring Boot 2.0 正式版还没有发布,这里提供的是 Spring 4.x 最新版本的依赖,这两个依赖分别如下:

Spring Framework (Bill Of Materials) » 4.3.12.RELEASE

Spring Boot Dependencies » 1.5.8.RELEASE

上图只显示部分依赖

这两个依赖搭配的时候,可以通过上面第一个确定你要选择的 Spring 版本,然后去 Spring Boot 这个依赖中选择和 Spring 版本对应的版本(Spring Boot 中有对 spring-core 的依赖)。上面这两个版本就是目前(2017-11-05)最新的版本。

依据这两个依赖,我们创建一个基础的依赖如下:

<?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>tk.mybatis</groupId>
  <artifactId>spring-dependencies</artifactId>
  <packaging>pom</packaging>
  <version>4.3.12.RELEASE</version>
  <name>基础依赖版本管理</name>
  <properties>
<springframework.version>4.3.12.RELEASE</springframework.version>
<springboot.version>1.5.8.RELEASE</springboot.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <!-- 统一管理Spring依赖 -->
      <dependency>
<groupId>org.springframework</groupId>
        <artifactId>spring-framework-bom</artifactId>
        <version>${springframework.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!--通过Spring Boot管理其他第三方版本-->
      <dependency>
<groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${springboot.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!--其他-->
    </dependencies>
  </dependencyManagement>
</project>

注意两个依赖都是添加在 dependencyManagement 中,并且指定 <type>pom</type> 和 <scope>import</scope>,import 是 <scope> 中最特别的一个类型,这个类型只能用于这种情况。

同时要注意这两个依赖的顺序,越靠前面优先级越高。

如果你查看上面pom.xml 文件最终生成的 effective-pom,就会发现这是一个有 3000 多行的文件,这里面几乎包含了常见的各种依赖,少数不包含在内再额外添加即可。

除了上面的配置外,一个基础的 pom 还可以在增加一些常见插件的配置。下面是一个简单的示例。

 <build>
  <plugins>
   <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
     <source>1.8</source>
     <target>1.8</target>
    </configuration>
   </plugin>
  </plugins>
</build>

指定编译时的 JDK 版本是非常有必要的,尤其是在使用 IDEA 的情况下,这样可以避免 IDEA 选择 1.5 作为默认值的一些编译错误。由于不同环境使用的插件不太相同,所以这里只是一个示例,不需要按照这种方式使用。更合理的用法可能是创建一个插件的基础 pom(plugin-pom),然后在上面的的 pom 中设置 parent 为 plugin-pom,这样能满足更多情况下的选择。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • 详细说明关于Java的数据库连接(JDBC)

    详细说明关于Java的数据库连接(JDBC)

    这篇文章主要介绍了详细说明关于Java的数据库连接JDBC,JDBC是用Java语言向数据库发送SQL语句,需要的朋友可以参考下面文章内容
    2021-09-09
  • 基于Java实现互联网实时聊天系统(附源码)

    基于Java实现互联网实时聊天系统(附源码)

    Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。本文将利用它实现互联网实时聊天系统,感兴趣的可以了解一下
    2022-09-09
  • Spring中的@ExceptionHandler异常拦截器

    Spring中的@ExceptionHandler异常拦截器

    这篇文章主要介绍了Spring中的@ExceptionHandler异常拦截器,Spring的@ExceptionHandler可以用来统一处理方法抛出的异常,给方法加上@ExceptionHandler注解,这个方法就会处理类中其他方法抛出的异常,需要的朋友可以参考下
    2024-01-01
  • RocketMQ实现随缘分BUG小功能示例详解

    RocketMQ实现随缘分BUG小功能示例详解

    这篇文章主要为大家介绍了RocketMQ实现随缘分BUG小功能示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • javaweb配置jsp路径映射操作

    javaweb配置jsp路径映射操作

    这篇文章主要介绍了javaweb配置jsp路径映射操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • 详解Java执行groovy脚本的两种方式

    详解Java执行groovy脚本的两种方式

    这篇文章主要介绍了Java执行groovy脚本的两种方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 深入了解Java核心类库--泛型类

    深入了解Java核心类库--泛型类

    这篇文章主要为大家详细介绍了java泛型类定义与使用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能给你带来帮助
    2021-07-07
  • Java中的HashMap集合深度解析

    Java中的HashMap集合深度解析

    这篇文章主要介绍了Java中的HashMap集合深度解析, HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构,我们总会在不经意间用到它,很大程度上方便了我们日常开发,需要的朋友可以参考下
    2023-09-09
  • 解决Javaweb 提交表单到servlet时出现空白页面,但网站不报错问题

    解决Javaweb 提交表单到servlet时出现空白页面,但网站不报错问题

    这篇文章主要介绍了解决Javaweb 提交表单到servlet时出现空白页面,但网站不报错的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 通过实例学习Either 树和模式匹配

    通过实例学习Either 树和模式匹配

    这篇文章主要介绍了通过实例学习Either 树和模式匹配,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06

最新评论