Gradle整合SpringBoot多模块项目搭建(含源码)

        本人在学习Gradle的期间,发现大部分关于gradle项目的构建的文章,不是直接使用spring initializr自动构建,就是搭建项目的配置过于复杂且没有相应的说明,对于刚刚接触gradle的新人而言,会产生很多困惑,想要去更改配置却无从下手。
        故而,在这篇文章中,本人使用Idea搭建了一个简易的gradle + springboot的项目,并提供项目的源码,希望能帮助到初次接触gradle的童鞋。


1、Gradle环境的配置及Idea中配置使用

详情参考:https://blog.csdn.net/scropio0zry/article/details/100145818

 

2、Gradle 项目结构介绍

Gradle项目由一个单一的构建文件 build.gradle 和一个源代码树 src 构成。 大项目可以将其拆分成更小的,相互依赖的模块,以便更容易理解。

 

多项目构建的结构特征:

  • 在项目的根目录或主目录中都有一个settings.gradle文件。
  • 根目录或主目录都有一个build.gradle文件。
  • 具有自己的build.gradle构建文件的子目录。

 

3、项目源码地址

https://gitee.com/scorpio0zry/gradle-demo

 

4、项目搭建

首先,建立根项目 web-test-demo

选择File - New – Project,选择Gradle 点击下一步

填写完 GroupId 和 ArtifactId后,点击下一步

如上图,勾选完后,点击一下步,选择项目名和位置,点击Finish,即可创建一个简单的Gradle项目

选择已经创建好的项目,右键 New – Model,按照上面方式,依次创建子组件web-test-base和web-test-service

由此,我们就可以得到一个Gradle多模块项目,如下图所示

 

5、项目配置

下面首先看下根项目的settings.gradle 这是用来管理多项目的,里面包含了根项目及子项目的name,无需修改

下面将根项目中的配置文件 build.gradle 的内容清空,并复制以下内容(记得group须改写

//针对所有project的配置,包含根项目,除此之外还有subprojects 和 project,感兴趣的童鞋可以自行百度查阅
allprojects {
    //创建项目时的你填写
    group 'com.ryzhang' //改写
    version '1.0-SNAPSHOT'

    //项目是java项目
    apply plugin: 'java'
    //项目是idea项目
    apply plugin: 'idea'

    //jdk版本
    sourceCompatibility = 1.8

    //仓库:gradle会根据从上到下的顺序依次去仓库中寻找依赖
    repositories {
        //优先从本地仓库获取
        mavenLocal()
        //从阿里云或者公司仓库获取
        maven {
            url 'http://maven.aliyun.com/nexus/content/groups/public/' //配置阿里云 或者 自己公司的仓库
        }
        //从中央仓库获取
        mavenCentral()
    }

    ext {
        //这里管理版本
        junitVersion = '4.12'
        commonsVesion = '3.0'
        slf4jVersion = '1.7.16'
    }

    //项目中所使用到的依赖,这里添加的依赖会被所有项目,包括root项目继承
    dependencies {
        testCompile("junit:junit:$junitVersion")
        compile("org.slf4j:slf4j-api:$slf4jVersion")
        //也可直接将版本写在最后 compile("org.slf4j:slf4j-api:1.7.16")
        //另外一种形式 (group + name + version) compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.16'
    }
}


//声明gradle脚本自身需要使用的资源
buildscript {
    //repositories为什么要要声明两次
    //
    //buildscript中的声明是gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等。
    //
    //而在build.gradle文件中直接声明的依赖项、仓库地址等信息是项目自身需要的资源。
    repositories {
        mavenLocal()
        maven {
            url "http://maven.aliyun.com/nexus/content/groups/public/"
        }
    }

    ext {
        //这里管理版本
        springbootVersion = '1.5.8.RELEASE'
    }

    dependencies {
        //spring-boot插件
        classpath("org.springframework.boot:spring-boot-gradle-plugin:$springbootVersion")
    }
}

 

子项目base的配置文件 build.gradle 如下

//base 所需要的依赖
dependencies {
    compile ("org.apache.commons:commons-lang3:$commonsVesion")
}

base项目仅是一个java项目,用来存放一些公有类及方法,而根项目中allprojects 已经声明了所有项目 均为 java项目

//项目是java项目
apply plugin: 'java'
//项目是idea项目
apply plugin: 'idea'

这里就不需要在进行声明,仅需配置base项目所需的依赖即可

 

子项目service的配置 build.gradle如下:

apply plugin:'application'
//声明spring-boot插件
apply plugin: "spring-boot"
//启动项
mainClassName = "com.ryzhang.StartServer"

//service项目所需依赖
dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.boot:spring-boot-starter-thymeleaf")
    //依赖子项目
    compile project (":web-test-base")
}

service项目配置了spring-boot依赖,在此声明了spring-boot插件及启动项

service项目中的启动项 StartServer 如下

package com.ryzhang;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author ryzhang5
 * @Package com.ryzhang
 * @date 2019/9/20 17:24
 * @Copyright
 */
@SpringBootApplication
public class StartServer {
    public static void main(String[] args){
        SpringApplication.run(StartServer.class);
    }
}

 

这样一个简单的gradle + springboot项目便搭建好了,项目结构及依赖如下图所示

童鞋们可以根据自己的需要在对应项目中dependencies进行依赖添加,并在根项目的配置文件build.gradle的ext中实现依赖版本的管理。

 

6、Idea管理Gradle项目常用命令

点开Idea右侧Gradle,以下是常用的三个命令及介绍。当然也可以直接启动StartServer来运行程序

 

7、项目测试

base项目下添加类com.ryzhang.model.Person

package com.ryzhang.model;

/**
 * @author ryzhang5
 * @Package com.ryzhang.model
 * @date 2019/9/22 11:29
 * @Copyright
 */
public class Person {
    private String name;
    private Integer age;

    public Person() {
    }

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

service项目下添加 com.ryzhang.controller.TestController

package com.ryzhang.controller;

import com.ryzhang.model.Person;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author ryzhang5
 * @Package com.ryzhang.controller
 * @date 2019/9/22 11:31
 * @Copyright
 */
@Controller
public class TestController {


    @RequestMapping("/test")
    @ResponseBody
    public Person test(){
        Person person = new Person("小明",18);

        return  person;
    }
}

添加service项目配置文件application.yml

server:
  port: 8082
  context-path:  /

运行项目,访问 localhost:8082/test 得到结果

PS:如同开头所言,本人刚刚接触Gradle不久,想要深入了解Gradle的话,还是要参考相关书籍以及大佬们的博客。

PS.PS:如果文章有所疏漏,还请大佬指出。

  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值