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

作者:zh452647457 时间:2021-11-08 00:42:36 

环境介绍 IDEA

我用的是2020.2

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

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

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

Next

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

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

创建成功后删除src 目录

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

创建子模块 gradle-demo

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

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

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

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

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

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

定义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

执行结果

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

发布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

执行结果

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

gradle-demo 验证 启动项目

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

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

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

demo 源码地址

来源:https://blog.csdn.net/zh452647457/article/details/108844078

标签:idea,Gradle,springboot,多模块项目
0
投稿

猜你喜欢

  • Java 动态代理的多种实现方式

    2023-11-20 05:23:14
  • IDEA搭建dubbo项目的过程及存在的问题

    2023-10-15 17:56:53
  • 运行java的class文件方法详解

    2021-07-29 03:53:48
  • java写入文件的几种方法分享

    2023-06-26 15:56:55
  • Java毕业设计实战之宠物医院与商城一体的系统的实现

    2023-06-02 13:28:44
  • C#线程间通信的异步机制

    2023-10-13 16:45:23
  • SpringBoot响应处理之以Json数据返回的实现方法

    2023-12-21 12:21:47
  • MyBatis使用动态SQL标签的小陷阱

    2023-09-11 04:42:57
  • RocketMQ源码解析broker 启动流程

    2022-12-25 10:50:54
  • 浅谈Java 三种方式实现接口校验

    2023-01-20 02:57:55
  • Android中隐藏标题栏和状态栏的方法

    2022-04-16 07:04:27
  • c#读取文件详谈

    2023-03-04 14:47:30
  • C# ManualResetEvent使用方法详解

    2022-05-15 23:57:51
  • java程序员常见的sql错误

    2021-11-06 22:24:14
  • IDEA社区版下载安装流程详解(小白篇)

    2021-11-13 12:37:18
  • springboot下mybatis-plus如何打印sql日志和参数到日志文件

    2023-06-15 12:34:05
  • Java统计字符串中字符出现次数的方法示例

    2023-11-25 08:23:02
  • 使用Nexus搭建Maven私服教程的方法步骤

    2023-03-05 18:56:58
  • C# 设计模式系列教程-策略模式

    2022-04-30 16:09:03
  • Springboot+ElementUi实现评论、回复、点赞功能

    2022-06-16 04:34:00
  • asp之家 软件编程 m.aspxhome.com