IDEA 2020.2 +Gradle 6.6.1 + Spring Boot 2.3.4 创建多模块项目的超详细教程

环境介绍 IDEA

我用的是2020.2

Gradle

安装参考 Gradle安装配置

我这安装的是6.6.1

C:\Users\herion>gradle -v

------------------------------------------------------------
Gradle 6.6.1
------------------------------------------------------------

Build time:  2020-08-25 16:29:12 UTC
Revision:   f2d1fb54a951d8b11d25748e4711bec8d128d7e3

Kotlin:    1.3.72
Groovy:    2.5.12
Ant:     Apache Ant(TM) version 1.10.8 compiled on May 10 2020
JVM:     1.8.0_211 (Oracle Corporation 25.211-b12)
OS:      Windows 10 10.0 amd64

创建 gradle-parent New Project --> Spring Initalizr 选择jdk版本,我这里使用1.8

Next

–> 根据需求修改 Group、Artifact、version 、Type、name、package 等,选择所需依赖创建项目

创建成功后删除src 目录

创建子模块 gradle-demo

选中gradle-parent–> new -->Module

创建子模块操作与创建gradle-parent 雷同,这里就不做复述了,创建好gradle-demo后在gradle-parent的settings.gradle 中引入模块依赖 include ‘gradle-demo'

删除gradle-demo 中settings.gradle文件,否则不能喝gradle-parent建立依赖关系

定义gradle 自身所需资源

buildscript {
  ext {
    springBootVersion = '2.3.4.RELEASE'
    springBootManagementVersion = '1.0.8.RELEASE'
    springCloudVersion = 'Hoxton.SR6'
    REPOSITORY_HOME = "http://maven.aliyun.com"
  }
  repositories {
    maven { url '${REPOSITORY_HOME}/nexus/content/groups/public/' }
    mavenCentral()
    maven { url 'https://repo.spring.io/snapshot' }
    maven { url 'https://repo.spring.io/milestone' }
  }
  dependencies {
    classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    classpath("io.spring.gradle:dependency-management-plugin:${springBootManagementVersion}")
  }
}

修改gradle-parent项目build.gradle 配置全项目通用配置

allprojects {
  apply plugin: 'java'
  apply plugin: 'idea'
  group = 'com.herion'
  sourceCompatibility = JavaVersion.VERSION_1_8
  targetCompatibility = JavaVersion.VERSION_1_8
}

子项目通用配置

subprojects {
  apply plugin: 'org.springframework.boot'
  apply plugin: 'io.spring.dependency-management'
  [compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
  //仓库
  repositories {
    maven { url '${REPOSITORY_HOME}/nexus/content/groups/public/' }
    mavenCentral()
    maven { url 'https://repo.spring.io/snapshot' }
    maven { url 'https://repo.spring.io/milestone' }
  }

  dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
      exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
  }

  dependencyManagement {
    imports { mavenBom("org.springframework.boot:spring-boot-dependencies:${springBootVersion}") }
    imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" }
  }

  test {
    useJUnitPlatform()
  }
}

发布插件配置

 /**
   * 发布插件
   */
  publishing {
    publications {
      mavenJava(MavenPublication) {
        from components.java
        versionMapping {
          usage('java-api') {
            fromResolutionOf('runtimeClasspath')
          }
          usage('java-runtime') {
            fromResolutionResult()
          }
        }
      }
    }
    // 发布仓库
    repositories {
      maven {
        // TODO 换成自己的私服地址
        def releasesRepoUrl = "http://my.repo.com/nexus/repository/maven-releases"
        def snapshotsRepoUrl = "http://my.repo..com/nexus/repository/maven-snapshots"
        url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
        credentials {
          username nexusUser
          password nexusPassword
        }
      }
    }
  }

  configurations {
    [apiElements, runtimeElements].each {
      it.outgoing.artifacts.removeIf { it.buildDependencies.getDependencies(null).contains(jar) }
      it.outgoing.artifact(bootJar)
    }
  }

验证

Gradle 查看所有项目

 gradle projects
> Task :projects
------------------------------------------------------------
Root project
------------------------------------------------------------
Root project 'gradle-parent'
+--- Project ':gradle-common'
+--- Project ':gradle-demo'
\--- Project ':gradle-demo2'

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :gradle-common:tasks

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.6.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 4s
1 actionable task: 1 executed

编译项目

$ gradle build

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.6.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 5s
12 actionable tasks: 12 up-to-date

执行结果

发布jar包到nexus 命令

$ gradle publishMavenJavaPublicationToMavenRepository
> Task :gradle-common:publishMavenJavaPublicationToMavenRepository
> Task :gradle-demo:publishMavenJavaPublicationToMavenRepository
> Task :gradle-demo2:publishMavenJavaPublicationToMavenRepository
Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.6.1/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 24s
16 actionable tasks: 13 executed, 3 up-to-date

执行结果

gradle-demo 验证 启动项目

浏览器访问
http://localhost:8080/helllo?name=herion

demo 源码地址

到此这篇关于IDEA 2020.2 +Gradle 6.6.1 + Spring Boot 2.3.4 创建多模块项目的文章就介绍到这了,更多相关idea+Gradle+springboot多模块项内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • springboot+idea+maven 多模块项目搭建的详细过程(连接数据库进行测试)

    创建之前项目之前 记得改一下 maven  提高下载Pom速度 记得 setting 中要改 maven  改成 阿里云的.具体方法 网上查第一步 搭建parents 项目,为maven项目 ,不为springboot 项目 记得修改groupId 第二步 搭建多个子模块, honor-dao   honor-manager   honor-common记得创建 honor-manager 的时候 要把他的gruopId 改成com.honor.manager 这里爆红的原因是 因为 我做到后面

  • 基于maven使用IDEA创建多模块项目

    鉴于最近学习一个分布式项目的开发,讲一下关于使用IntelliJ IDEA基于Maven创建多模块项目的实际开发,可能有不合适的地方,但是项目是可以跑通的,也请有不足之处,都提出来,一起讨论下. 一. 项目工程目录 首先展示一下,最终整个项目的工程目录: 简单介绍一下目录结构: common-parent为所有项目的父项目,主要用来管理所有项目使用的jar包及其版本. common-utils为公共的工具类项目,继承父项目,它会被打成jar包供其它项目使用. taotao-manager为我们自

  • IntelliJ IDEA创建maven多模块项目(图文教程)

    项目主要分成3个模块,wms-root为父模块,wms-core和wms-app(webapp类型的模块)为子模块. 一.Parent Project,创建wms-root父模块. 1.依次点击:File->New->Project 2.左侧面板选择maven(不要选择Create from archetype选项),如下图,点击Next即可. 3.依次补全如下信息,点击Next 4.输入项目名字.如ModuleProject,我们主要是在这个项目下创建我们的子模块. 5.这样我们就创建好了一

  • idea 多模块项目依赖父工程class找不到问题的方法

    比如,我们有这么个过程,项目结构如下: a --b --c a是总结点,b是子节点,c是父节点 b依赖父节点class,通过maven构建时通常我们会在子节点中添加父节点依赖,如: <dependencies> <dependency> <groupId>com.xxx</groupId> <artifactId>c</artifactId> <version>${project.version}</version&

  • Idea中SpringBoot多模块项目的建立实现

    What 内含一个或多个maven模块的SpringBoot项目称为SpringBoot多模块项目 Why 便于维护 将一个大的单体项目分成多个子模块有利于模块间的维护, 删除或移动单个模块时对其他模块的影响也比较小 单个模块还可以复用 共享依赖 只需要在父类中定义公共的依赖项,子类模块都会共享父类的依赖项 在大型项目中会使得代码更容易简洁. How 1.父模块 创建父项目(SpringBoot) 删除不需要的目录 去除src .mvn mvnw mvnw.cmd 文件 pom packagin

  • IDEA 2020.2 +Gradle 6.6.1 + Spring Boot 2.3.4 创建多模块项目的超详细教程

    环境介绍 IDEA 我用的是2020.2 Gradle 安装参考 Gradle安装配置 我这安装的是6.6.1 C:\Users\herion>gradle -v ------------------------------------------------------------ Gradle 6.6.1 ------------------------------------------------------------ Build time: 2020-08-25 16:29:12 U

  • spring boot actuator监控超详细教程

    spring boot actuator介绍 Spring Boot包含许多其他功能,可帮助您在将应用程序推送到生产环境时监视和管理应用程序. 您可以选择使用HTTP端点或JMX来管理和监视应用程序. 审核,运行状况和指标收集也可以自动应用于您的应用程序. 总之Spring Boot Actuator就是一款可以帮助你监控系统数据的框架,其可以监控很多很多的系统数据,它有对应用系统的自省和监控的集成功能,可以查看应用配置的详细信息,如: 显示应用程序员的Health健康信息 显示Info应用信息

  • Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法

    今天为小伙伴们介绍一款 IntelliJ IDEA 上的免费开源插件,叫做 EasyCode,可以方便的根据数据库生成相应的代码. EasyCode 是基于 IntelliJ IDEA 开发的代码生成插件,支持自定义任意模板(Java,html,js,xml):只要是与数据库相关的代码都可以通过自定义模板来生成:支持数据库类型与 java 类型映射关系配置:支持同时生成生成多张表的代码,张表有独立的配置信息,完全的个性化定义,规则由你设置. 我自己也稍微体验了一把,还是蛮方便的. 1.安装 首先

  • Gradle的安装和IDEA集成、项目导入的详细教程

    一.Gradle简介 Gradle是专注于灵活性和性能的开源构建自动化工具.Gradle构建脚本是使用Groovy或Kotlin DSL 编写的. 高度可定制 -Gradle以最基本的方式可定制和可扩展的方式建模. 快速 -Gradle通过重新使用以前执行的输出,仅处理已更改的输入以及并行执行任务来快速完成任务. 强大 -Gradle是Android的官方构建工具,并支持许多流行的语言和技术. Gradle官网 二.Gradle的安装配置 Gradle可在所有主要操作系统上运行,并且仅需要Jav

  • Windows下gradle的安装与配置的超详细教程

    下载gradle 直接百度gradle,然后点击链接进去就可以找到,这里附上下载链接:gradle下载 安装gradle## 解压下载下来的zip压缩包,如图(我下载的是gradle-4.8.1-bin.zip) 链接: https://pan.baidu.com/s/1ovmJMvK9PfJYzd9TioBxzQ  提取码: p3qs 注意:下图中的[jars]目录是我自己创建的,原有的下载下来是没有的. 配置环境变量 右键 "计算机"–"属性"(按照图操作即可)

  • Spring Boot 员工管理系统超详细教程(源码分享)

    员工管理系统 1.准备工作 资料下载 内含源码 + 笔记 + web素材 源码下载地址: http://xiazai.jb51.net/202105/yuanma/javaguanli_jb51.rar 笔记 素材 源码 1.1.导入资源 将文件夹中的静态资源导入idea中 位置如下 1.2.编写pojo层 员工表 //员工表 @Data @NoArgsConstructor public class Employee { private Integer id; private String l

  • 详解Spring Boot中使用@Scheduled创建定时任务

    我们在编写Spring Boot应用中经常会遇到这样的场景,比如:我需要定时地发送一些短信.邮件之类的操作,也可能会定时地检查和监控一些标志.参数等. 创建定时任务 在Spring Boot中编写定时任务是非常简单的事,下面通过实例介绍如何在Spring Boot中创建定时任务,实现每过5秒输出一下当前时间. 在Spring Boot的主类中加入@EnableScheduling注解,启用定时任务的配置 @SpringBootApplication @EnableScheduling publi

  • 详解用Spring Boot零配置快速创建web项目

    一.Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者. 本文是一个springboot入门级的helloworld程序. 二.maven安装与配置 下载地址:http://maven.apache

  • 通过Spring Boot + Mybatis + Redis快速搭建现代化Web项目

    背景 SpringBoot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一.Mybatis是一个十分轻量好用的ORM框架.Redis是当今十分主流的分布式key-value型数据库,在web开发中,我们常用它来缓存数据库的查询结果. 本篇博客将介绍如何使用SpringBoot快速搭建一个Web应用,并且采用Mybatis作为我们的ORM框架.为了提升性能,我们将Redis作为Mybatis的二级缓存.为了测试我们的代码,我们编写了单元测试,并且用H2内存数据库

  • spring boot task实现动态创建定时任务的方法

    在Spring Boot项目中,通过@EnableScheduling可启用Spring自带的定时任务支持,在通过@Scheduled注解定义定时任务,但是通过注解只能编写固定时间的定时任务,无法动态调整定时间隔,可通过实现SchedulingConfigurer接口实现动态定时任务注册. 对比Quartz的优缺点 优点:配置非常简单 缺点: 不支持分布式部署 不支持动态配置定时任务 不支持持久化 其实这几个缺点归根结底都是因为不支持持久化,所以如果项目需要持久化定时任务,还是要选择Quartz

随机推荐