Gradle构建SpringBoot单模块项目

发布时间 2023-10-24 10:44:52作者: C_C_菜园

Gradle构建SpringBoot单模块项目

  • 方式Ⅰ:未基于:Gradle Wrapper
  • 方式Ⅱ:(推荐使用)Gradle Wrapper【可以不安装Gradle、统一Gradle的版本】——包括Maven也是一样的可以用Wrapper的方式
  • 版本:JDK8 + SpringBoot2.7.15 + Gradle8.x
  • 本篇主要讲实现。Gradle与Maven的区别自己去看

Ⅰ、普通方式(基础)

  • 别用这种方式,gradle的版本也低

一、需要先安装Gradle

  • 需要配置Gradle的环境变量,如同Maven

  • 自己搜,也许后面我会出

二、构建项目、导包

1、build.gradle -构建配置+导包
  • 主要插件:'io.spring.dependency-management' (Gradle 5.x 之前版本)

    • dependency-management会做自动做一件核心事情:spring boot grale插件会自动调用dependency-management引入org.springframework.boot:spring-boot-dependencies:SPRING_BOOT_VERSION
      • 其中SPRING_BOOT_VERSION也是spring boot gradle插件的版本,spring-boot-dependencies中维护了spring boot生态下的bom数据。
    • Gradle 5.x开始自动提供bom功能,因此可以不用引入spring 的dependency management插件,直接导包
  • 主要插件:'org.springframework.boot'

//以下两种构件方式都可以
// 构建方式一:
/*buildscript {
    repositories {
        mavenLocal()
        maven { url 'https://maven.aliyun.com/repository/public/' }
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.5.RELEASE")
    }
}
apply plugin: 'java'    //gradle创建的java项目
apply plugin: 'idea'    //idea插件:生成IDE工程文件,然后在IDE中直接打开这样的工程文件。这样的好处一是非常简单,二是所有人都使用了相同的IDE配置。
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management' //类似 Maven的 dependencyManagement方式实现依赖管理 的插件*/

// 构建方式二:
plugins{
    id 'java'
    id 'idea'
    id 'org.springframework.boot' version '2.0.5.RELEASE'
    id 'io.spring.dependency-management' version "1.0.8.RELEASE"
}

//组、版本、jdk版本
group = 'com.zdhb'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
targetCompatibility = 1.8

//仓库配置
repositories {
    mavenLocal() //本地
    maven { url 'https://maven.aliyun.com/repository/public/' } //阿里镜像
    mavenCentral()  //中央仓库
}

//导包
dependencies {
    compile"org.springframework.boot:spring-boot-starter-web"
    testCompile("org.springframework.boot:spring-boot-starter-test")
    
//    compile "com.baomidou:mybatis-plus:2.2.0"
    compile "com.microsoft.sqlserver:sqljdbc4:4.0"
    compile "org.apache.velocity:velocity-engine-core:2.0"
    compile "com.alibaba:druid:1.1.11"
    //hutool工具类
    compile "cn.hutool:hutool-all:5.0.7"
    //lombok
    compile "org.projectlombok:lombok:1.18.16"
    //处理 JSON 数据包
    compile "com.alibaba:fastjson:1.2.49"
    compile "org.apache.commons:commons-lang3:3.5"
    //compile "org.springframework:spring-web:5.0.9.RELEASE"
//    compile "io.swagger:swagger-annotations:1.5.20"
    compile "com.baomidou:mybatis-plus-boot-starter:2.2.0"
}
2、application.yml -配置文件
server:
  port: 9004

配置数据库和mybatis plus后

server:
  port: 9004
spring:
  #  连接池配置
  datasource:
    url: jdbc:sqlserver://***:1433;database=site_card_input  #zd_gms_cd数据库名 配置时间区
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver  #数据库驱动
    username: sa
    password: ****
    type: com.alibaba.druid.pool.DruidDataSource  #使用druid连接池
  #时间戳统一转换
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

#  配置 mybatis-plus
mybatis-plus:
  mapper-locations: classpath:com/****/sacs/mapper/*Mapper.xml   #扫描xml文件
  type-aliases-package: com.****.sacs.dto,com.zdhb.sacs.query  #配置别名

3、启动类
  • 记得扫描Mapper的组件 @MapperScan("com.zdhb.sacs.mapper")
@SpringBootApplication
@MapperScan("com.zdhb.sacs.mapper")
public class SiteAndCradServersApplication9004 {

    public static void main(String[] args) {
        SpringApplication.run(SiteAndCradServersApplication9004.class);
    }

}
4、配置成功的标志,Gradle构建成功

image

Ⅱ、单模块项目

  • JDK8的最终版

  • 其实jdk8+springboot的最终版是:2.7.16-SNAPSHOT。只是我导不进来,所以用了:2.7.15

  • Gradle Wapper:用于统一项目所使用的gradle版本,不用安装Gradle

  • 直接使用idea构建gradle项目

  • springboot+jdk+gradle的版本:来自spring管网

https://docs.spring.io/spring-boot/docs/2.7.15/reference/html/getting-started.html#getting-started

image

一、说明

1、idea自己去新建Gradle的SpringBoot项目

image

2、compile导包方式被弃用

  • 使用:implementation、api导包
在Gradle 8.x及以上的版本中,compile配置已被弃用,并且被以下两个配置所取代:

1. implementation:用于指定项目的主要依赖项,这些依赖项将被编译和打包到项目中。这是替代compile配置的推荐选项。
【关键词:被编译和打包、推荐选项、不共享到其他模块】
【重点:依赖无法被传递给子模块】

2. api:用于指定项目的公共API依赖项,这些依赖项将被编译、打包到项目中,并且对其他模块可见。这是替代compile配置的另一个选项,适用于需要在多个模块之间共享依赖项的情况。
【关键词:被编译和打包、公共依赖其他模块可见、多模块共享依赖】
【重点:依赖可以被传递给子模块】

二、gradle配置

  • 可以不用管
  • gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

三、项目配置

1、build.gradle

  • 作用如同Maven的pom文件
  • 配置springboot的版本,导包,配置仓库地址等等……
plugins {
    id 'java'
    id 'org.springframework.boot' version '2.7.15'
    id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}

group = 'com.cc'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '8'
    targetCompatibility = '8'
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

//仓库配置
repositories {
    //本地
    mavenLocal()
    //阿里仓库
    maven { url 'https://maven.aliyun.com/repository/public/' }
    //公司仓库。必须用:https。Gradle默认情况下不允许使用不安全的协议,以提高安全性。
    maven { url 'https://****:****/repository/maven-public/' }
    //中央仓库
    mavenCentral()
}

//导包
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

//用于配置测试任务(test task)
tasks.named('test') {
    //是一个测试任务的配置方法,它指定使用JUnit 5平台来运行测试
    //通过使用useJUnitPlatform()配置方法,您可以确保您的测试任务使用JUnit 5来运行测试。
    useJUnitPlatform()
}

// 配置gradle的版本。需要单独运行
wrapper {
    //gradle的版本
    gradleVersion = '8.4'
    //版本类型:BIN、ALL(完全版,可以看gradle的代码)
    distributionType = 'ALL'
}

2、settings.gradle

  • 可以实现多模块配置,这里先不演示
rootProject.name = 'JavaPatterns'

3、SpringBoot配置文件、启动类见【Ⅰ、二】

Ⅲ、多模块项目