当前位置:   article > 正文

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

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须改写

  1. //针对所有project的配置,包含根项目,除此之外还有subprojects 和 project,感兴趣的童鞋可以自行百度查阅
  2. allprojects {
  3. //创建项目时的你填写
  4. group 'com.ryzhang' //改写
  5. version '1.0-SNAPSHOT'
  6. //项目是java项目
  7. apply plugin: 'java'
  8. //项目是idea项目
  9. apply plugin: 'idea'
  10. //jdk版本
  11. sourceCompatibility = 1.8
  12. //仓库:gradle会根据从上到下的顺序依次去仓库中寻找依赖
  13. repositories {
  14. //优先从本地仓库获取
  15. mavenLocal()
  16. //从阿里云或者公司仓库获取
  17. maven {
  18. url 'http://maven.aliyun.com/nexus/content/groups/public/' //配置阿里云 或者 自己公司的仓库
  19. }
  20. //从中央仓库获取
  21. mavenCentral()
  22. }
  23. ext {
  24. //这里管理版本
  25. junitVersion = '4.12'
  26. commonsVesion = '3.0'
  27. slf4jVersion = '1.7.16'
  28. }
  29. //项目中所使用到的依赖,这里添加的依赖会被所有项目,包括root项目继承
  30. dependencies {
  31. testCompile("junit:junit:$junitVersion")
  32. compile("org.slf4j:slf4j-api:$slf4jVersion")
  33. //也可直接将版本写在最后 compile("org.slf4j:slf4j-api:1.7.16")
  34. //另外一种形式 (group + name + version) compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.16'
  35. }
  36. }
  37. //声明gradle脚本自身需要使用的资源
  38. buildscript {
  39. //repositories为什么要要声明两次
  40. //
  41. //buildscript中的声明是gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等。
  42. //
  43. //而在build.gradle文件中直接声明的依赖项、仓库地址等信息是项目自身需要的资源。
  44. repositories {
  45. mavenLocal()
  46. maven {
  47. url "http://maven.aliyun.com/nexus/content/groups/public/"
  48. }
  49. }
  50. ext {
  51. //这里管理版本
  52. springbootVersion = '1.5.8.RELEASE'
  53. }
  54. dependencies {
  55. //spring-boot插件
  56. classpath("org.springframework.boot:spring-boot-gradle-plugin:$springbootVersion")
  57. }
  58. }

 

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

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

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

  1. //项目是java项目
  2. apply plugin: 'java'
  3. //项目是idea项目
  4. apply plugin: 'idea'

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

 

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

  1. apply plugin:'application'
  2. //声明spring-boot插件
  3. apply plugin: "spring-boot"
  4. //启动项
  5. mainClassName = "com.ryzhang.StartServer"
  6. //service项目所需依赖
  7. dependencies {
  8. compile("org.springframework.boot:spring-boot-starter-web")
  9. compile("org.springframework.boot:spring-boot-starter-thymeleaf")
  10. //依赖子项目
  11. compile project (":web-test-base")
  12. }

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

service项目中的启动项 StartServer 如下

  1. package com.ryzhang;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. /**
  5. * @author ryzhang5
  6. * @Package com.ryzhang
  7. * @date 2019/9/20 17:24
  8. * @Copyright
  9. */
  10. @SpringBootApplication
  11. public class StartServer {
  12. public static void main(String[] args){
  13. SpringApplication.run(StartServer.class);
  14. }
  15. }

 

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

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

 

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

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

 

7、项目测试

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

  1. package com.ryzhang.model;
  2. /**
  3. * @author ryzhang5
  4. * @Package com.ryzhang.model
  5. * @date 2019/9/22 11:29
  6. * @Copyright
  7. */
  8. public class Person {
  9. private String name;
  10. private Integer age;
  11. public Person() {
  12. }
  13. public Person(String name, Integer age) {
  14. this.name = name;
  15. this.age = age;
  16. }
  17. public String getName() {
  18. return name;
  19. }
  20. public void setName(String name) {
  21. this.name = name;
  22. }
  23. public Integer getAge() {
  24. return age;
  25. }
  26. public void setAge(Integer age) {
  27. this.age = age;
  28. }
  29. }

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

  1. package com.ryzhang.controller;
  2. import com.ryzhang.model.Person;
  3. import org.springframework.stereotype.Controller;
  4. import org.springframework.web.bind.annotation.RequestMapping;
  5. import org.springframework.web.bind.annotation.ResponseBody;
  6. /**
  7. * @author ryzhang5
  8. * @Package com.ryzhang.controller
  9. * @date 2019/9/22 11:31
  10. * @Copyright
  11. */
  12. @Controller
  13. public class TestController {
  14. @RequestMapping("/test")
  15. @ResponseBody
  16. public Person test(){
  17. Person person = new Person("小明",18);
  18. return person;
  19. }
  20. }

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

  1. server:
  2. port: 8082
  3. context-path: /

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/305723?site
推荐阅读
相关标签
  

闽ICP备14008679号