【springboot开发】Gradle VS Maven

前言: java构建工具的主要作用是依赖管理和构建的生命周期管理。gradle和maven是目前java中最流行的两个构建工具,springboot常用maven,Android studio使用gradle。

1. 简介

主流java构建工具:

  • Ant
  • Maven
  • Gradle

在这里插入图片描述

2. Maven

2.1 安装

  • 从官网下载解压到本地目录。配置好MAVEN_HOME,并设置环境变量
  • 主流的Java IDE: Eclipse可以安装Maven。Intellij有内置的Maven可以使用。

2.2 依赖管理

Maven的配置文件是.pom文件,它使用XML文件描述正在构建的项目以及与第三方模块有关的软件依赖性,构建顺序以及所需的插件。可以提前定义打包和编译之类的任务。用springboot举例:

<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.vs</groupId>
    <artifactId>com.vs.maven.gradle</artifactId>
    <version>1.0</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.6.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa
            </artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.25</version>
        </dependency>
    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>

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

Maven将从不同的仓库下载库和插件,然后将它们全部放入本地计算机的缓存中。

2.3 构建生命周期管理

Maven有三个生命周期,每个生命周期又分为多个阶段:

  • Clean:包含3个阶段,与清理上次构建生成的文件相关
  • Default:Maven的核心生命周期,包含多个阶段如预处理、编译、测试、打包、安装到本地仓库、发布到远程仓库等。
  • Site: 包含4个阶段,与生成项目报告,站点,发布站点相关。

3. Gradle

3.1 安装

  • 从官网下载解压到本地目录。配置好GRADLE_HOME,并设置环境变量
  • 主流的Java IDE: Eclipse可以安装Gradle。Intellij有内置的Gradle可以使用。

3.2 依赖管理

相比于pom文件更加简洁,在pom.xml中我们需要引入一个依赖时需要将它的groupId, artifactId和version都用标签引起来。但是在build.gradle中仅仅需要将三者的value用:连起来,并"调用compile函数"。
例如:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
</dependencies>

对应的gradle配置:

dependencies {
    compile("org.springframework.boot:spring-boot-starter-security")
}

总结

  1. gradle使用了Groovy作为配置文件,相较于maven的pom文件更加灵活
  2. Gradle和Maven都支持并行的项目构建和依赖解析。但是gradle的三个特点让gradle可以跑的比maven快上一点:
    • 增量构建
    • 构建缓存
    • Gradle守护进程
  3. Gradle非常灵活,并且基于脚本。自定义构建将很容易在Gradle上完成。
  4. Gradle功能更强大。但是,有时候一个中小型的项目不需要它提供的大多数功能,则Maven可能就是最佳选择。而Gradle则是大型项目的最佳选择。
  • 24
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 多模块项目结构一般如下: ``` ├── parent │ ├── module1 │ ├── module2 │ └── pom.xml ├── pom.xml └── README.md ``` 其中,`parent` 为父项目,`module1` 和 `module2` 为子模块。 在实际开发中,每个子模块都会有自己的 `pom.xml` 文件,并且通过 `parent` 模块的 `pom.xml` 进行统一管理。 Gradle 是一款基于 Groovy 的构建工具,类似于 MavenGradle 也可以用于构建 Spring Boot 多模块项目。 Gradle 的多模块项目结构与 Maven 类似,也是一个包含多个子项目的根目录,每个子项目有自己的 build.gradle 文件。 下面是一个简单的 Gradle 多模块项目结构: ``` ├── build.gradle ├── settings.gradle ├── module1 │ └── build.gradle └── module2 └── build.gradle ``` 其中,根目录下的 `build.gradle` 和 `settings.gradle` 分别用于配置整个项目和所有子项目的基本信息,每个子项目有自己的 `build.gradle` 配置文件。 关于 Gradle 如何打包 Spring Boot 多模块项目,可以参考下面的示例: ``` plugins { id 'org.springframework.boot' version '2.4.0' id 'io.spring.dependency-management' version '1.0.10.RELEASE' } group = 'com.example' version = '0.0.1-SNAPSHOT' java.sourceCompatibility = '11' subprojects { apply plugin: 'java' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' group = 'com.example' version = '0.0.1-SNAPSHOT' java.sourceCompatibility = '11' repositories { mavenCentral() } dependencies { implementation platform('org.springframework.boot:spring-boot-dependencies:2.4.0') implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' } } task packageAll(type: Zip) { baseName = 'my-application' version = '' destinationDir = file("$buildDir/distributions") from subprojects.output } ``` 在上述示例中,使用了 Gradle 的 `subprojects` 语法,对所有子项目进行了统一配置,并且定义了一个名为 `packageAll` 的任务,用于打包所有子项目的输出文件。执行 `gradle packageAll` 命令即可生成包含所有子项目输出文件的 zip 包。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值