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开发的更多相关文章

  1. 使用IDEA构建Spring-boot多模块项目配置流程

    使用IDEA构建Spring-boot多模块项目配置流程 1.创建项目 点击Create New Project 在左侧选中Spring Initializer,保持默认配置,点击下一步. 在Grou ...

  2. Java秒杀系统实战系列~构建SpringBoot多模块项目

    摘要:本篇博文是“Java秒杀系统实战系列文章”的第二篇,主要分享介绍如何采用IDEA,基于SpringBoot+SpringMVC+Mybatis+分布式中间件构建一个多模块的项目,即“秒杀系统”! ...

  3. SpringBoot多模块项目打包问题

    项目结构图如下: 在SpringBoot多模块项目打包时遇见如下错误: 1.repackage failed: Unable to find main class -> [Help 1] 解决步 ...

  4. Jenkins构建Maven多模块项目时,单独编译子模块,并且不触发构建其它模块

    一.Jenkins构建Maven多模块项目时,单独编译子模块 配置: 1.Root POM指向父pom.xml 2.Goals and options指定构建模块的参数:mvn -pl jsoft-w ...

  5. 2017-09-26 发布 SpringBoot多模块项目实践(Multi-Module)

    https://segmentfault.com/a/1190000011367492?utm_source=tag-newest 2017-09-26 发布 SpringBoot多模块项目实践(Mu ...

  6. SSM001/构建maven多模块项目

    一.Idea构建maven多模块项目 1.创建maven项目--创建父模块 [1].File->New->Module... [2].点击next,填写:GroupId,ArtifactI ...

  7. 记Spring搭建功能完整的个人博客「Oyster」全过程[其二] Idea中Maven+SpringBoot多模块项目开发的设计和各种坑(模块间依赖和打包问题)

    大家好嘞,今天闲着没事干开写写博客,记录一下Maven+SpringBoot的多模块设计和遇到的坑. 多模块设计 简单说明一下截止目前的需求: 需要RESTful API:对文章.标签.分类和评论等的 ...

  8. Gradle构建SpringBoot并打包可运行的jar配置

    使用Gradle构建项目,继承了Ant的灵活和Maven的生命周期管理,不再使用XML作为配置文件格式,采用了DSL格式,使得脚本更加简洁. 构建环境: jdk1.6以上,此处使用1.8 Gradle ...

  9. docker部署 springboot 多模块项目+vue

    之前学习了docker,今天就来试试将这个项目打包成docker镜像并通过运行一个镜像来运行项目.这里使用的项目是el-admin.是一个开源的springboot后端管理框架(前端vue),有兴趣的 ...

随机推荐

  1. xcode无线调试

    前言: xcode9 以上才会有无线调试这个功能,换了一个type-c口的mac,公司的新电脑,但是公司不给配转接口,到某东看了一下,type-c口同时可以转化usb和VGA的要198,官网差不多50 ...

  2. 深入ReentrantLock的实现原理和源码分析

    ReentrantLock是Java并发包中提供的一个可重入的互斥锁.ReentrantLock和synchronized在基本用法,行为语义上都是类似的,同样都具有可重入性.只不过相比原生的Sync ...

  3. flask配置详解

    直接修改config对象 flask会有一个可用的配置对象保存着载入的配置值: Flask 对象的 config 属性,这是 Flask 自己放置特定配置值的地方,也是扩展可以存储配置值的地方.但是, ...

  4. 【题解】有标号的DAG计数4

    [HZOI 2015] 有标号的DAG计数 IV 我们已经知道了\(f_i\)表示不一定需要联通的\(i\)节点的dag方案,考虑合并 参考[题解]P4841 城市规划(指数型母函数+多项式Ln),然 ...

  5. Django简介、安装和入门

    python三大主流Web框架 Django 优点:大而全,自身携带的组件和功能特别特别多,类似于航空母舰 缺点:过于笨重,所需功能不多时,Django依然提供这些功能,占据内存 Flask 优点:小 ...

  6. openlayers中实现点的拖拽(modify),在layer中增加修改删除point。

    最近忙着整地图,都忘记了总结来沉淀自己,自我检讨一下. 总结一下最近使用openlayer时学习的内容,先说下我的业务逻辑吧,在室内地图中 1,点击新增在地图上新增一个可以拖拽的点,拖拽完成后确定位置 ...

  7. DNS服务器红帽5.4搭建图文教程!!!

    DNS服务器 挂载光盘 mount 查看光盘所在位置 mount -t iso9660 设备目录 /mnt 表示挂载 软件包安装 所有软件包都在Server目录下 rpm -ivh /mnt/Serv ...

  8. 使用vue-baidu-map解析geojson

    这是后台给我的gejson: {"type":"FeatureCollection","features":[{"type&quo ...

  9. Centos 中文乱码解决方法

    问题描述 crontab -e 添加定时任务时,直接将下面内容粘贴过去,结果竟然乱码了. # 每个星期日凌晨3:00执行完全备份脚本 0 3 * * 0 /bin/bash -x /root/bash ...

  10. 低功耗蓝牙(BLE)——概述

    1. 概述   蓝牙协议是由SIG制定并维护的无线通信协议,蓝牙协议栈是蓝牙协议的具体实现.各厂商都根据蓝牙协议实现了自己的一套函数库--蓝牙协议栈,所以不同厂商的蓝牙协议栈之间虽然存在差别,但是都遵 ...