文章

使用gradle 在idea中创建一个多module的SpringBoot项目

网上搜索了很久没找到这类的详细说明,都是你抄袭我的我抄袭他的,完事儿了还不能打包,很难受,所以自己摸索了一套流程来创建多module项目,其中参考了官方文档(gradle)

一、版本说明

  • 1 认使用springboot使用1.5.9, 目前2.1.0已经发布, 但是该版本的gradle构建时相对于1.5.9 版本有些改动, 目前还没找到哪儿出了问题, 不过maven是可以正常搭建;

  • 2 默认gradle使用的是4.6;


二、搭建步骤

一. 新建文件夹keppel作为项目的根目录, 打开cmd进入该目录, 执行如下命令来初始化根项目:

1
  gradle init

二. 以上命令已经初始化完了项目的根目录,然后就直接用intellij idea打开该目录


png2jpg

三. 此时项目结构如上图所示, 然后开始新增通用模块 common, 右键keppel根项目new-module


3jpg

四. 修改common模块下的build.gradle, 如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
  buildscript {
	repositories {
	  mavenLocal()
	  jcenter()
	  mavenCentral()
	  maven { url springRepo }
	  maven {
		url "https://plugins.gradle.org/m2/"
	  }
	}
  }

  apply plugin: 'io.spring.dependency-management'

  jar {
	baseName = 'keppel-common'
	version = '0.0.1-SNAPSHOT'
  }

  dependencies {
	compile('org.springframework:spring-context')
	compile("org.hibernate:hibernate-validator")
	compile('com.google.code.gson:gson:2.2.4')
	compile 'com.fasterxml.jackson.core:jackson-databind:2.6.4'
	compile 'com.fasterxml.jackson.core:jackson-core:2.6.4'
	compile 'com.fasterxml.jackson.core:jackson-annotations:2.6.4'
	compile 'org.jdom:jdom2:2.0.5'
	compileOnly('org.projectlombok:lombok')
	testCompile('org.springframework.boot:spring-boot-starter-test')
  }

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

五. 接着修改根目录下的build.gradle文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
  def vJavaLang = '1.8'
  def bootProjects = [project(':api')]
  def gradleDir = "${rootProject.rootDir}/gradle"

  group = 'com.keppel'
  version = '0.0.1-SNAPSHOT'

  buildscript {
	ext {
	  springBootVersion = '1.5.9.RELEASE'
	  springRepo = 'http://repo.spring.io/libs-release'
	}
	repositories {
	  mavenLocal()
	  jcenter()
	  mavenCentral()
	  maven { url springRepo }
	}
	dependencies {
	  classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
	}
  }

  subprojects {
	apply plugin: "eclipse"
	apply plugin: "idea"
	apply plugin: 'java'

	targetCompatibility = vJavaLang
	sourceCompatibility = vJavaLang

	repositories {
	  mavenLocal()
	  jcenter()
	  mavenCentral()
	}
  }

  configure(bootProjects) {
	apply plugin: 'eclipse'
	apply plugin: 'idea'
	apply plugin: 'java'
	apply plugin: 'org.springframework.boot'

	targetCompatibility = vJavaLang
	sourceCompatibility = vJavaLang

	repositories {
	  mavenLocal()
	  jcenter()
	  mavenCentral()
	}
  }

六. 新增项目入口模块 api, 方法同上,生成的子模块下面都是只有一个build.gradle文件,修改该文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
jar {
    baseName = 'keppel-api'
    version = '0.0.1-SNAPSHOT'
}

springBoot {
    mainClass = 'com.keppel.ApiApplication'
}

dependencies {
    compile project(':core')
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

七. 修改完成后再在api模块下面添加src-main-java文件夹,java文件夹下面并排添加resources文件夹,java文件夹下面创建主类ApiApplication:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.keppel;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
* Created by keppel on 2018/11/23.
*/
@SpringBootApplication
public class ApiApplication {
    public static void main(String[] args) {
        SpringApplication.run(ApiApplication.class, args);
    }
}

八. 此时此刻,项目已经搭建完成大半了。项目的结构图如下图所示:


4jpg

九. 开始测试项目是否搭建成功

创建一个新的module: user module, build.gradle和api的一样,引入common 然后编写一个类进行测试

本文由作者按照 CC BY 4.0 进行授权