使用Gradle构建springboot多模块项目,并混合groovy开发
idea设置本地gradle

打包:

build.gradle
//声明gradle脚本自身需要使用的资源,优先执行
buildscript {
ext {
springBootVersion = '2.1.4.RELEASE'
}
repositories {
// 本地maven仓库
mavenLocal()
maven { url = 'http://maven.aliyun.com/nexus/content/groups/public/' }
//和maven中央仓库一样的另一个依赖管理仓库,主要是java
jcenter()
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
}
} // allprojects 所有项目共享的配置
allprojects {
apply plugin: 'idea'
apply plugin: 'java-library'
version = '1.0'
sourceCompatibility = 11
targetCompatibility = 11
} // subprojects : 所有子模块共享的配置
subprojects {
apply plugin: 'java'
apply plugin: 'org.springframework.boot' //使用springboot插件
apply plugin: 'io.spring.dependency-management' //版本管理插件
apply plugin: 'application' // 识别mainClassName 插件
//如果是多模块项目,需要指定一个程序入口,必须指定,否则无法build,单模块可以不用指定
mainClassName = 'cm.hou.blogweb.BlogWebApplication'
// java编译的时候缺省状态下会因为中文字符而失败
[compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
// 配置所有子模块的依赖仓库地址
repositories {
// 本地maven仓库
mavenLocal()
maven { url = 'http://maven.aliyun.com/nexus/content/groups/public/' }
//和maven中央仓库一样的另一个依赖管理仓库,主要是java
jcenter()
}
//所有子模块共有依赖
dependencies{
// gradle5.0版本以上引入需要这种形式
compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
implementation 'org.codehaus.groovy:groovy'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
}
settings.gradle
// 父项目名称
rootProject.name = 'blog-system'
// 导入子模块
include 'blog-web','blog-service','blog-pojo','blog-dao','blog-admin'
使用api解决多重依赖
dao 模块依赖
dependencies {
// 使用api 暴露依赖,对其他模块可见,不用重复引用
api (project(':blog-pojo'))
api 'mysql:mysql-connector-java:8.0.15'
api 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.1'
api 'com.zaxxer:HikariCP' // 连接池
api 'com.github.pagehelper:pagehelper:5.1.10'
implementation 'org.springframework.boot:spring-boot-starter'
}
使用api之后,service模块依赖dao模块是, api的依赖是可见的,就不用重复依赖了:
service
dependencies {
api (project(':blog-dao'))
implementation 'org.springframework.boot:spring-boot-starter'
}
web模块
// 引入插件新写法
plugins {
id 'war'
id 'groovy'
}
//旧写法
//apply plugin : "war"
archivesBaseName = 'blog-web'
/**
* SourceSets: 指定资源路径
*/
sourceSets.main.java.srcDirs = []
// 指定groovy编译路径,不指定groovy类不会编译
sourceSets.main.groovy.srcDirs += ["src/main/java"]
/**
* api 用于取代compile(已被废弃)
* api或compile关键字引用的包对于其他module来说是可见的,
* implementation关键字引用的包对于其他module来说是不可见的。
*/
dependencies{
implementation (project(':blog-service'))
implementation 'org.springframework.boot:spring-boot-starter-web'
// 打包成war包
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
}
使用souceSets混合编译java和Groovy
必须添加这个才会编译groovy类
/**
* SourceSets: 指定资源路径
*/
sourceSets.main.java.srcDirs = []
// 指定groovy编译路径,不指定groovy类不会编译
sourceSets.main.groovy.srcDirs += ["src/main/java"]
项目结构

添加lombok
dependencies {
// guava 工具包
api 'com.google.guava:guava:27.1-jre'
// gradle5.0版本以上引入需要这种形式
compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
implementation 'org.springframework.boot:spring-boot-starter'
}
最后贴上我的Gradle项目: https://gitee.com/houzheng1216/blog_system
使用Gradle构建springboot多模块项目,并混合groovy开发的更多相关文章
- 使用IDEA构建Spring-boot多模块项目配置流程
使用IDEA构建Spring-boot多模块项目配置流程 1.创建项目 点击Create New Project 在左侧选中Spring Initializer,保持默认配置,点击下一步. 在Grou ...
- Java秒杀系统实战系列~构建SpringBoot多模块项目
摘要:本篇博文是“Java秒杀系统实战系列文章”的第二篇,主要分享介绍如何采用IDEA,基于SpringBoot+SpringMVC+Mybatis+分布式中间件构建一个多模块的项目,即“秒杀系统”! ...
- SpringBoot多模块项目打包问题
项目结构图如下: 在SpringBoot多模块项目打包时遇见如下错误: 1.repackage failed: Unable to find main class -> [Help 1] 解决步 ...
- Jenkins构建Maven多模块项目时,单独编译子模块,并且不触发构建其它模块
一.Jenkins构建Maven多模块项目时,单独编译子模块 配置: 1.Root POM指向父pom.xml 2.Goals and options指定构建模块的参数:mvn -pl jsoft-w ...
- 2017-09-26 发布 SpringBoot多模块项目实践(Multi-Module)
https://segmentfault.com/a/1190000011367492?utm_source=tag-newest 2017-09-26 发布 SpringBoot多模块项目实践(Mu ...
- SSM001/构建maven多模块项目
一.Idea构建maven多模块项目 1.创建maven项目--创建父模块 [1].File->New->Module... [2].点击next,填写:GroupId,ArtifactI ...
- 记Spring搭建功能完整的个人博客「Oyster」全过程[其二] Idea中Maven+SpringBoot多模块项目开发的设计和各种坑(模块间依赖和打包问题)
大家好嘞,今天闲着没事干开写写博客,记录一下Maven+SpringBoot的多模块设计和遇到的坑. 多模块设计 简单说明一下截止目前的需求: 需要RESTful API:对文章.标签.分类和评论等的 ...
- Gradle构建SpringBoot并打包可运行的jar配置
使用Gradle构建项目,继承了Ant的灵活和Maven的生命周期管理,不再使用XML作为配置文件格式,采用了DSL格式,使得脚本更加简洁. 构建环境: jdk1.6以上,此处使用1.8 Gradle ...
- docker部署 springboot 多模块项目+vue
之前学习了docker,今天就来试试将这个项目打包成docker镜像并通过运行一个镜像来运行项目.这里使用的项目是el-admin.是一个开源的springboot后端管理框架(前端vue),有兴趣的 ...
随机推荐
- vue学习笔记(六)表单输入绑定
前言 在上一章vue学习笔记(四)事件处理器这一篇博客的内容中,我们已经了解vue是如何绑定事件的,而本篇博客主要讲解的是vue中表单输入的绑定,通常我们自己提交信息的时候都是通过表单将信息到服务器的 ...
- idea编辑器的使用
编辑器下载和安装就不说了,网上每次版本都更换得好快 ,发新版的人很多idea2019:https://pan.baidu.com/s/1zc1wkQLLVxbXSjy4ISN4aQ 提取码:cgah, ...
- IDEA到期了?不用怕,最新的永久激活送给你
今天发现好多人的IDEA激活码都到期了,IDEA社区版又不能满足开发需求,因此写这篇IDEA的激活文章,希望对大家有用. 以下方法的破解文件的是永久破解的,不存在过期时间. 当然,有条件还是买正版授权 ...
- 使用阿里云 ECS 快速部署 WordPress 博客系统
今天在 阿里云 ECS上 部署了一套 Lamp 系统,建了一个WordPress的网站,把操作过程记录下来,文中所列脚本可以直接应用. 废话不多说直接开动,ECS云服务购买可以点击 阿里云ECS 云主 ...
- postman 的基础使用篇(一)
简介 postman 是接口协作开发的优秀平台,可以用来进行接口设计.构建和调试,之前以chrome插件的形式,现在也有原生APP. 安装 Native app 通过链接 download page ...
- 极光推送SDK通过泰尔终端实验室检测,符合统一推送接口标准
1月7日,中国深圳--国内领先的开发者服务提供商极光(Aurora Mobile, NASDAQ:JG)宣布其旗下产品极光推送SDK通过中国信息通信研究院泰尔终端实验室的检测,其性能和接口标准符合统一 ...
- 推荐中的多任务学习-YouTube视频推荐
本文将介绍Google发表在RecSys'19 的论文<Recommending What Video to Watch Next: A Multitask Ranking System> ...
- Springboot Jackson配置根本方案, 日期格式化, 时区设置生效
当项目集成配置的功能越来越多, 说不准哪个配置就影响到了什么. 比如你启用了EnableMvC, 默认配置文件配置的一些文件就失效了. 虽然约定大于配置,让springboot可以极简化构建, 但不熟 ...
- iOS开发常见问题
1. 在 ViewController 中添加子视图时,导航栏遮挡添加的子视图 let bpView = BpView.init(frame: CGRect.init(x: , y: , width: ...
- YOLOv3 K-means获取anchors大小
YOLOv1和YOLOv2简单看了一下,详细看了看YOLOv3,刚看的时候是蒙圈的,经过一番研究,分步记录一下几个关键的点: v2和v3中加入了anchors和Faster rcnn有一定区别,这个a ...