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. jdbc链接Oracle数据库的封装

    在src下创建properties文件 driver=oracle.jdbc.driver.OracleDriverurl=jdbc:oracle:thin:@//127.0.0.1:1521/XEu ...

  2. mysql中information_schema.columns字段说明

    1. 获取所有列信息(COLUMNS) SELECT  *  FROM information_schema.COLUMNS WHERE  TABLE_SCHEMA='数据库名';  COLUMNS表 ...

  3. 开发板免费领!腾讯云IoT应用创新大赛正式启动!

    大赛简介 腾讯云IoT应用创新大赛是腾讯云面向物联网领域举办的大型竞赛,通过腾讯云IoT全链路产品能力,开放平台和服务,与广大开发者共同创新,孵化优秀的IoT产品和解决方案,共同构建IoT应用生态. ...

  4. [梁山好汉说IT] 梁山好汉和抢劫银行

    [梁山好汉说IT] 梁山好汉和抢劫银行 0x00 摘要 今天看了一篇文章<史上最有学问的银行劫匪,教你如何把握人生重大机会>.先摘录精华如下,然后看看梁山好汉在类似情况下如何处理 (东京汴 ...

  5. ssh保持连接不断开

    使用ssh连接服务器,长时间不使用,会自动断开,控制台会卡死无法使用,现提供以下两个方案解决这个问题: [服务器主动保持连接] 修改服务器配置文件: vim /etc/ssh/sshd_config ...

  6. 15 道 Spring Boot 高频面试题,看完直接当面霸【入门实用】

    前言 本文转自松哥(网名:江南一点雨)的一篇实用入门文章,写的挺好的,希望对各位有所帮助. 什么是面霸?就是在面试中,神挡杀神佛挡杀佛,见招拆招,面到面试官自惭形秽自叹不如!松哥希望本文能成为你面霸路 ...

  7. Python 官方团队在打包项目中踩过的坑

    花下猫语:这是 packaging 系列的第三篇译文,该系列是全网关于此话题的最详尽(水平也很高)的一个系列.原作者是 Python 官方打包团队成员,是 virtualenv 和 tox 项目的维护 ...

  8. 03_常用的JS正则表达式54种形式类型

    1.由数字.26个英文字母或者下划线组成的字符串: ^[0-9a-zA-Z_]{1,}$ 2.非负整数(正整数 + 0 ): ^/d+$ 3. 正整数: ^[0-9]*[1-9][0-9]*$ 4.非 ...

  9. 物理ceph集群+K8s

    前提条件 在Ceph为k8s创建一个pool ceph osd pool create k8s 128 创建admin用户 ceph auth get-or-create client.admin m ...

  10. Flink系列之Time和WaterMark

    当数据进入Flink的时候,数据需要带入相应的时间,根据相应的时间进行处理. 让咱们想象一个场景,有一个队列,分别带着指定的时间,那么处理的时候,需要根据相应的时间进行处理,比如:统计最近五分钟的访问 ...