前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springBoot+gradle构建多模块项目

springBoot+gradle构建多模块项目

作者头像
WindCoder
发布2018-09-19 15:56:09
6.1K0
发布2018-09-19 15:56:09
举报
文章被收录于专栏:WindCoderWindCoder

前言

之前已经完成构建简单的项目,详情可见

springBoot初探-创建项目

本文在其基础之上完成。

创建Gradle项目

按照文首的链接先创建单模块的项目,此时唯一不同的是项目名称本文用的是qycms。

配置settings文件

提示:若先配置settings文件无法触发自动构建,请先执行下一步“修改根目录 build.gradle”,之后保存就会自动执行。

来到此处即代表你已经构建好一个单模块项目了。若想构建一个多模块的项目,则需要配置settings.gradle文件以描述模块(项目)关系。

用rootProject.name设置根模块名称,include描述子模块的名称和关系,如:

代码语言:javascript
复制
rootProject.name = 'qycms'

include 'qycms-core:common'
include 'qycms-core:system-provider'
include 'qycms-core:system-console'

保存,等自动构建后。此时,G:\none\Java\idea\qycms>下执行

代码语言:javascript
复制
tree /f

可得到类似的结构,注意此时子项目中是不存在build.gradle文件的,该文件需要手动创建:

本项目会将springBoot相关jar包的引用以及配置文件放在common模块下。

system-provider为系统级项目的业务逻辑,system-console为系统级项目的api所在的Controller层。

目录结构

代码语言:javascript
复制
│  .gitignore
│  build.gradle
│  README.md
│  settings.gradle
│
├─qycms-core
│  │
│  ├─common
│  │  │  build.gradle
│  │  │  common.iml
│  │  │
│  │  │
│  │  └─src
│  │      ├─main
│  │      │  ├─java
│  │      │  └─resources
│  │      │      │  application.properties
│  │      │
│  │      └─test
│  │          ├─java
│  │          └─resources
│  ├─src
│  │  ├─main
│  │  │  ├─java
│  │  │  └─resources
│  │  └─test
│  │      ├─java
│  │      └─resources
│  ├─system-console
│  │  │  build.gradle
│  │  │  system-console.iml
│  │  │
│  │  └─src
│  │      ├─main
│  │      │  ├─java
│  │      │  │
│  │      │  └─resources
│  │      └─test
│  │          ├─java
│  │          └─resources
│  └─system-provider
│      │  build.gradle
│      │  system-provider.iml
│      │
│      └─src
│          ├─main
│          │  ├─java
│          │  │
│          │  └─resources
│          └─test
│              ├─java
│              └─resources
└─src
    ├─main
    │  ├─java
    │  ├─resources
    │  └─webapp
    │          index.jsp
    │
    └─test
        ├─java
        └─resources

修改根目录 build.gradle

配置buildscript

这是定义扩展属性(给脚本用的脚本)

代码语言:javascript
复制
//定义扩展属性(给脚本用的脚本)
buildscript {

    //定义扩展属性(可选)
    ext {
        springBootVersion = "1.5.8.RELEASE"
    }
    repositories {
        mavenCentral()
        maven { url "https://repo.spring.io/plugins-release" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

配置allprojects

所有模块共有的配置

代码语言:javascript
复制
// 所有模块都采用统一的版本号以及groupName
allprojects {

    //修改项目属性(可选)
    group 'com.windcoder'
    version '1.0-SNAPSHOT'

    //应用插件
    apply plugin: 'java'
    apply plugin: 'war'
    apply plugin: 'org.springframework.boot'

    // JVM 版本号要求
    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    // java编译的时候缺省状态下会因为中文字符而失败
    [compileJava,compileTestJava,javadoc]*.options*.encoding = 'UTF-8'

    // 全局设置依赖配置
    configurations {
        providedRuntime
    }

    // 定义仓库
    repositories {
        maven{url 'http://maven.aliyun.com/nexus/content/groups/public/'}
        maven{url 'https://mvnrepository.com/'}
        mavenLocal()
        mavenCentral()
    }

    // 定义依赖:声明项目中需要哪些依赖
    dependencies {
        compile fileTree(dir: 'lib', exclude:'', include: '*.jar')
    }

}

配置subprojects

所有子模块公共配置

代码语言:javascript
复制
// 配置所有子模块
subprojects {

    //指定目录结构
    sourceSets {
        main {
            java{
                srcDir 'src/main/java'
            }
            resources {
                srcDir 'src/main/java'
                srcDir 'src/main/resources'
            }
        }
    }
    // 关掉bootRepackage任务
    bootRepackage.enabled=false
}

配置configure(rootProject)

根模块独有的配置

代码语言:javascript
复制
// 配置根模块
configure(rootProject) {
    apply plugin: 'eclipse'
    apply plugin: 'idea'
    apply plugin: 'maven'

    bootRepackage.enabled=true

    // 配置
    springBoot {
        mainClass = "com.windcoder.qycms.QycmsApplication";
        buildInfo()
    }

    //
    dependencies {
       compile project(":qycms-core:system-console")
    }

    // 生成war时过滤内嵌tomcat依赖
    war {

        rootSpec.exclude("tomcat-embed*.jar")
        rootSpec.exclude("javax.servlet-api*.jar")
        rootSpec.exclude("org.projectlombok:lombok")
    }
}

配置common

 build.gradle

common模块用来存放基础的一些配置,比如springBoot的一些jar包等。

代码语言:javascript
复制
apply plugin: 'eclipse-wtp'
apply plugin: 'idea'

archivesBaseName = "qycms-common"

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web:${springBootVersion}")
    compile("org.springframework.boot:spring-boot-starter-thymeleaf")
}

配置springBoot的mainClass

代码语言:javascript
复制
package com.windcoder.qycms;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

/**
 * Description:
 * User: WindCoder
 * Date: 2018-03-21
 * Time: 23:50 下午
 */
@SpringBootApplication
public class QycmsApplication {
    public static void main(String[] args) {
        SpringApplication.run(QycmsApplication.class,args);
    }
}

配置springBoot配置文件application.properties

此处暂时仅简单的配置一下端口号等

代码语言:javascript
复制
server.port=8000
server.session.timeout=3600
server.session.cookie.http-only=true
# 1024 * 1024 * 1024 = 1GB, 默认值是 10485760 = 10M 
# server.tomcat.max-http-post-size=1073741824
spring.http.multipart.max-file-size=10737418244
spring.http.multipart.max-request-size=10737418244

配置system-provider

 build.gradle

引入对common的项目依赖

代码语言:javascript
复制
apply plugin: 'eclipse-wtp'
apply plugin: 'idea'

dependencies {
    compile project(':qycms-core:common')

}

配置system-console

 build.gradle

引入对system-provider的项目依赖

代码语言:javascript
复制
apply plugin: 'eclipse-wtp'
apply plugin: 'idea'

dependencies {
    compile project(':qycms-core:system-provider')

}

添加测试Controller

代码语言:javascript
复制
package com.windcoder.qycms.core.system;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("api/test")
public class TestController {

    @GetMapping("sayHello")
    public String sayHello (String name){
        return "Hello " + name;
    }
}

配置idea中的springBoot工程启动

主要需要注意配置Use classpath of module选项,要配置成根模块的qycms_main.对于eclipse,需要启动qycms模块。

MainClass要统一为上面的配置configure(rootProject) 中的springBoot 的mainClass一致,即

代码语言:javascript
复制
com.windcoder.qycms.QycmsApplication

运行

到此通过debug或者run来运行测试了.

当出现上图时,便可在浏览器输入http://localhost:8000/api/test/sayHello?name=Lili,查看到如下效果:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 创建Gradle项目
  • 配置settings文件
  • 修改根目录 build.gradle
    • 配置buildscript
      • 配置allprojects
        • 配置subprojects
          • 配置configure(rootProject)
          • 配置common
            •  build.gradle
              • 配置springBoot的mainClass
                • 配置springBoot配置文件application.properties
                • 配置system-provider
                  •  build.gradle
                  • 配置system-console
                    •  build.gradle
                      • 添加测试Controller
                      • 配置idea中的springBoot工程启动
                      • 运行
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档