使用Gradle创建SpringBoot项目

简介: 使用Gradle创建SpringBoot项目

Spring Boot Gradle 插件在Gradle 提供Spring Boot 支持。它允许您打包可执行jar 或war 归档文件,运行SpringBoot 应用程序,并使用Spring-Boot-dependencies 提供的依赖管理。


① 创建工程

如下所示,首先使用Spring Initializr创建项目,然后通过Idea的Settings修改gradle。

这里Server URL :start.spring.io还可以换成阿里云的 https://start.aliyun.com/。


② 引入插件

plugins {
  id 'org.springframework.boot' version '2.3.7.RELEASE' 
  //维护springboot版本号,不单独使用,和下面两个插件一起用
  id 'io.spring.dependency-management' version '1.0.10.RELEASE'
  //进行依赖管理,在引入其它boot依赖时省略版本号、解决jar包冲突问题
  id 'java'
}

③ 引入所需要的依赖

dependencies {
  implementation 'org.springframework.boot:spring-boot-starter'
  implementation 'org.springframework.boot:spring-boot-starter-web' //省略版本,原生bom支持,插件management提供
  testImplementation('org.springframework.boot:spring-boot-starter-test') {
  exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
  }
}
test {
  useJUnitPlatform()
}


④ 运行项目

要想运行当前Springboot 项目,直接执行gradle bootRun 指令或者idea 右侧按钮即可。


当然如果想让当前项目打成可执行jar 包,只需执行: gradle bootJar 指令即可。Cloud 项目创建也可以借助于脚手架创建,与Boot 项目类似。

⑤ 拓展spring-boot-gradle-plugin 插件

如下所示,这里我们可以在build.gradle中指定仓库与依赖。

//构建Gradle脚本自身需要的资源,可以声明的资源包括依赖项、第三方插件、maven仓库地址等。
buildscript {
    ext {
        springBootVersion = '2.2.1.RELEASE'
        springCloudVersion = 'Hoxton.RELEASE'
        springCloudAlibabaVersion = '0.2.2.RELEASE'
    }
    //设置仓库
    repositories {
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
        maven { url 'https://repo.spring.io/milestone'}
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}


⑥ 多module工程

如下图所示,工程包括多个module。其实与传统多module工程并无区别,同样是创建工程后创建module。这里说明一下Gradle的配置。


如下是settings.gradle配置文件示例:

rootProject.name = 'meinian-parent'
include 'meinian-bean'
include 'meinian-dao'
include 'meinian-service'
include 'meinian-web'
include 'meinian-mobile-web'


如下是build.gradle配置文件示例:

//父工程的坐标
group 'com.jane'
version '1.0-SNAPSHOT'
//配置全局, 包括root项目和子项目---如果配置了allprojects ,
//那么subprojects 中就无需配置编码和仓库
allprojects {
    group 'com.jane'
    version '1.0-SNAPSHOT'
    //配置编码格式
    tasks.withType(JavaCompile) {
        options.encoding = "UTF-8"
    }
    //设置仓库
    repositories {
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
        maven { url 'https://repo.spring.io/milestone'}
    }
}
//对所有子工程设置统一配置
subprojects {
    //添加插件
    apply plugin: 'java'
    //基本JDK配置
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    compileJava.options.encoding "UTF-8"
    compileTestJava.options.encoding "UTF-8"
    tasks.withType(JavaCompile) {
        options.encoding = "UTF-8"
    }
    group 'com.jane'
    version '1.0-SNAPSHOT'
    repositories {
        mavenLocal()
        maven {url "https://maven.aliyun.com/repository/public"}
        maven {url "https://maven.aliyun.com/repository/central"}
        maven {url "https://maven.aliyun.com/repository/google"}
        maven {url "https://maven.aliyun.com/repository/spring"}
        mavenCentral()
    }
    //依赖的配置:设置通用的依赖
    dependencies {
        testImplementation 'org.junit.jupiter:junit-jupiter-api'
        testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
        implementation 'log4j:log4j:1.2.17'
    }
    test {
        useJUnitPlatform()
    }
}
//为每个子工程设置依赖
project("meinian-bean"){
    dependencies {
        compileOnly 'org.projectlombok:lombok:1.18.24'
    }
}
project("meinian-dao"){
    apply plugin: 'java-library'//支持api
    dependencies {
        api project(':meinian-bean')
        implementation 'org.mybatis:mybatis-spring:1.2.3'
        implementation 'com.alibaba:druid:1.0.15'
        implementation 'org.mybatis:mybatis:3.3.0'
        implementation 'mysql:mysql-connector-java:5.1.36'
    }
}
project("meinian-service"){
    apply plugin: 'java-library'//支持api
    dependencies {
        api project(':meinian-dao')
        implementation 'org.springframework:spring-web:4.1.7.RELEASE'
        implementation 'org.springframework:spring-test:4.0.5.RELEASE'
        implementation 'org.springframework:spring-jdbc:4.1.7.RELEASE'
        implementation 'org.aspectj:aspectjweaver:1.8.6'
    }
}
project("meinian-web"){
    apply plugin: 'war'
    dependencies {
        implementation project(':meinian-service')
        implementation 'org.springframework:spring-webmvc:4.1.7.RELEASE'
        implementation "com.fasterxml.jackson.core:jackson-databind:2.2.3"
        implementation "com.fasterxml.jackson.core:jackson-annotations:2.2.3"
        implementation "com.fasterxml.jackson.core:jackson-core:2.2.3"
        compileOnly 'javax.servlet:servlet-api:2.5'
        implementation 'jstl:jstl:1.2'
    }
}
project("meinian-mobile-web"){
    apply plugin: 'war'
    dependencies {
        //implementation project(':meinian-bean')
        implementation project(':meinian-service')
        implementation 'org.springframework:spring-webmvc:4.1.7.RELEASE'
        implementation "com.fasterxml.jackson.core:jackson-databind:2.2.3"
        implementation "com.fasterxml.jackson.core:jackson-annotations:2.2.3"
        implementation "com.fasterxml.jackson.core:jackson-core:2.2.3"
        compileOnly 'javax.servlet:servlet-api:2.5'
        implementation 'jstl:jstl:1.2'
    }
}



目录
相关文章
|
9月前
|
Java Spring
在idea中创建spring boot的Gradle项目并启动(有一个小demo)(二)
在idea中创建spring boot的Gradle项目并启动(有一个小demo)(二)
746 1
|
9月前
|
Java Spring
在idea中创建spring boot的Gradle项目并启动(有一个小demo)(三)
在idea中创建spring boot的Gradle项目并启动(有一个小demo)(三)
159 1
|
30天前
|
Java fastjson Apache
Spring Boot+Gradle+ MyBatisPlus3.x搭建企业级的后台分离框架
Spring Boot+Gradle+ MyBatisPlus3.x搭建企业级的后台分离框架
31 1
|
1月前
|
Java 测试技术 API
云效流水线构建gradle项目失败提示gradle版本过低如何解决
云效(CloudEfficiency)是阿里云提供的一套软件研发效能平台,旨在通过工程效能、项目管理、质量保障等工具与服务,帮助企业提高软件研发的效率和质量。本合集是云效使用中可能遇到的一些常见问题及其答案的汇总。
33 0
|
6月前
|
Cloud Native Java Go
解决 Spring Boot 和 Gradle Java 版本兼容性问题:A problem occurred configuring root project ‘demo1‘. > Could n
解决 Spring Boot 和 Gradle Java 版本兼容性问题:A problem occurred configuring root project ‘demo1‘. > Could n
393 0
|
4月前
|
开发工具 Android开发 开发者
Android 项目编译 Gradle 配置说明
Android 项目编译 Gradle 配置说明
152 0
|
4月前
|
前端开发 Java Maven
Gradle笔记 七 publishing 项目发布(二)
Gradle笔记 七 publishing 项目发布
92 0
|
4月前
|
Java Maven
Gradle笔记 七 publishing 项目发布(一)
Gradle笔记 七 publishing 项目发布
61 0
|
4月前
|
Java Maven 数据安全/隐私保护
Gradle笔记 三 Gradle的项目周期和settings 文件
Gradle笔记 三 Gradle的项目周期和settings 文件
48 0
Gradle笔记 三 Gradle的项目周期和settings 文件
|
4月前
gradle运行项目不显示异常
gradle运行项目不显示异常
47 0