SpringBoot 中Maven和Gradle依赖管理

753 阅读3分钟

SpringBoot有两种依赖管理工具:Mavengradle,它们获取依赖的方式是相似的,都是从中央仓库获取依赖,然后拉取到本地存储(中央仓库在国外,所以有时候需要配置一个阿里云的仓库地址)

Maven管理依赖的方式是通过一个配置文件:pom.xml,通过该文件来管理项目中使用到的依赖,插件等;gradle管理依赖的方式是通过一个build.gradle配置文件来完成的

Mavengradle同样提供了很多的命令可以用来打包,发布,编译,测试等,编码之后直接执行这些命名就可以完成相应的操作了

Maven依赖结构说明

pom.xml文件结构

描述了项目包的依赖和项目构建时的配置,在默认的 pom.xml 包中分为四大块:

  1. 项目描述信息

    <groupId>com.neo</groupId> //项目的包路径
    <artifactId>hello</artifactId> //项目名称
    <version>2.0.5.RELEASE</version> 项目版本号
    <packaging>jar</packaging>//打包方式,一般有两个值:jar、war,表示使用 Maven 打包时构建成 Jar 包还是 War 包
    <name>hello</name>//项目名称
    <description>Demo project for Spring Boot</description>//项目描述
    
  2. 项目依赖配置

    //parent标签内配置 Spring Boot 父级版本 spring-boot-starter-parent,Maven 支持项目的父子结构,引入父级后会默认继承父级的配置;
    <parent>
    <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.0.5.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
    </parent>
    //dependencies标签内配置项目所需要的依赖包,Spring Boot 体系内的依赖组件不需要填写具体版本号,spring-boot-starter-parent 维护了体系内所有依赖包的版本信息
    <dependencies>
      <dependency>
     <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
    </dependencies>
    
  3. 构建时需要的公共变量

    //编码和jdk版本
    <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
    </properties>
    
  4. 项目构建配置

    //使用 Maven 构建 Spring Boot 项目必须依赖于 spring-boot-maven-plugin 组件用于打包等
    <build>
      <plugins>
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
      </plugins>
    </build>
    

gradle项目结构说明

首先就是项目中gradle的一些文件说明:

  • build.gradle:配置依赖的位置
  • gradle.bat:这两个是gradle环境的脚本,双击这个脚本可以自动完成构建
  • settings.grdle:文件将包含必要的一些设置,例如,任务或项目之间的依懒关系等;
  • gradle文件夹:gradle文件中存在着wrapper文件夹,在wrapper下存在以下两个文件(gradle-wrapper.jar,gradle-wrapper.properties)
  • wrapper文件的作用:可以利用它进行安装项目默认的gradle,这里由于我是事先已经在电脑上安装了gradle,所以具体如何利用wrapper自动安装gradle,后面如果有需要再进行说明
Gradle Wrapper

对于所有的Gradle项目来说,使用Gradle Wrapper有以下好处:

  1. 不用安装gradle也能运行gradle项目
  2. 所有人使用相同的gradle版本

build.gradle中加入以下配置:

task wrapper(type: Wrapper) {
    gradleVersion = '3.0'
}

然后在命令行运行:

gradle wrapper

此时会生成以下三个文件(夹):gradlew、gradlew.bat和gradle目录,这里的gradlewgradlew.bat其实只是脚本文件(前者用于Unix/Linux/Mac,后者用于Windows)

在使用gradle命令的地方替换为gradlewgradlew.bat,他们将自动下载指定的gradle版本,然后用该版本进行项目构建。如上文所示,本文中我们配置gradle版本为3.0。

请注意,这三个文件(夹)都需要提交到代码库中。当项目其他人拿到代码之后,由于gradlewgradlew.bat文件均在源代码中,他们本地即便没有gradle,依然可以通过以下命令进行项目构建:

./gradlew build

如果你的项目有持续集成(CI)服务器(你也应该有),那么你的CI机器也没有必要安装Gradle了。另外,此时所有人都是使用的相同版本的gradle,进而避免了由于版本不同所带来的问题。