前言
之前已经完成构建简单的项目,详情可见
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:noneJavaideaqycms>下执行
代码语言: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,查看到如下效果: