一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - 詳解IDEA下Gradle多模塊(項目)的構建

詳解IDEA下Gradle多模塊(項目)的構建

2021-07-12 15:14小馬哥 Java教程

這篇文章主要介紹了詳解IDEA下Gradle多模塊(項目)的構建,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

我們在新起一個項目的時候,一般都會建多個子項目(idea里面稱之為module模塊)。通過gradle構建,多個module之間需要將公用的配置抽取到全局,子項目中只寫差異化的配置,以便于維護。

多模塊項目的gradle目錄結構

示例:我的示例項目demo,我需要有一個common模塊用于公用代碼,一個rest模塊用于提供rest接口,rest依賴common,如果用gradle構建,目錄樹會是這樣:

?
1
2
3
4
5
6
7
8
demo
├── build.gradle   -- 全局配置
├── settings.gradle  -- 全局配置
├── common      -- 子模塊1目錄
│  └── build.gradle -- 子模塊1配置
├── rest       -- 子模塊2配置
│  └── build.gradle -- 子模塊2配置
...

idea下初始創建root目錄結構

a. idea本地創建項目并定義項目名

如果是通過idea新建一個本地項目,可按照如下步驟先創建root項目:

1、file -> new -> project: 選擇gradle->java

詳解IDEA下Gradle多模塊(項目)的構建

2、next, 填寫groupid和artifactid:

groupid: 如com.diboot
artifactid:如demo

3、next, 指定gradle home和jvm等

4、next, 選擇項目存放路徑。完成之后idea會創建相關文件

接下來如果你需要將本地新項目代碼上傳到代碼倉庫,可以通過vcs菜單導入:

詳解IDEA下Gradle多模塊(項目)的構建

b. 基于代碼倉庫指定的項目名創建root項目

而如果項目名已經在倉庫中定義,你需要基于倉庫名初始項目的gradle配置,則項目的初始創建是通過vcs導入,然后用命令行初始化gradle:

  1. file -> new -> project from version control -> ...
  2. 切換到terminal命令行,輸入 gradle init,按照操作提示進行root項目的初始化。

創建子模塊/項目

在根目錄demo文件夾右鍵選擇 new -> module -> gradle -> java, 指定子模塊artifactid名稱,依次添加common模塊和rest模塊后,gradle相關的目錄結構就跟我們期望的一致了。

全局gradle配置

在demo根目錄下:

settings.gradle中的結構定義如下

?
1
2
3
rootproject.name = 'demo'
include 'common'
include 'rest'

build.gradle中可以定義全局公用的構建配置,以spring boot項目配置示例:

?
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
54
55
56
57
buildscript {
  ext {
    springbootversion = '2.1.2.release'
  }
  repositories {
    maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
  }
  dependencies {
    classpath("org.springframework.boot:spring-boot-gradle-plugin:${springbootversion}")
  }
}
// 所有模塊/項目的通用配置
allprojects {
  group 'com.diboot'
  version '1.0-snapshot'
  apply plugin: 'idea'
}
// 子模塊/項目的統一配置
subprojects {
  apply plugin: 'java'
  // 指定jdk版本
  sourcecompatibility = 1.8
  targetcompatibility = 1.8
  // 指定編碼格式
  [compilejava,compiletestjava,javadoc]*.options*.encoding = 'utf-8'
  repositories {
    maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
  }
  ext {//依賴版本
    springbootversion = "2.1.2.release"
    mysqlconnectorversion = "8.0.13"
    mybatisstarterversion = "1.3.2"
    fastjsonversion = "1.2.54"
  }
  dependencies {
    compile("javax.servlet:javax.servlet-api:4.0.1")
    compile("org.springframework.boot:spring-boot-starter-web:$springbootversion")
    // mybatis
    compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:$mybatisstarterversion")
    // log4j2
    compile("org.springframework.boot:spring-boot-starter-log4j2:$springbootversion")
    // jdbc driver
    compile("mysql:mysql-connector-java:$mysqlconnectorversion")
    // json
    compile("com.alibaba:fastjson:$fastjsonversion")
    // apache commons
    compile("org.apache.commons:commons-lang3:3.8.1")
    
    // 單元測試
    testcompile("org.springframework.boot:spring-boot-starter-test:$springbootversion")
    testcompile("junit:junit:4.12")
  }
  configurations {
    //移除spring boot 默認logger依賴
    all*.exclude module: 'spring-boot-starter-logging'
  }
}

子模塊/項目gradle配置

通用的依賴配置可以在根目錄下的build.gradle中,子模塊/項目僅配置差異化的部分即可,如子項目特定的依賴。
common下的build.gradle示例:

?
1
2
3
dependencies {
  // 配置該項目特有的依賴
}

rest下的build.gradle示例(rest項目依賴common項目):

?
1
2
3
4
5
dependencies {
  // 依賴common項目
  compile project(":common")
  // 配置該項目特有的依賴
}

代碼參考:diboot-v2初始項目

gradle官方相關文章:
gradle多項目構建介紹
gradle多項目構建

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://segmentfault.com/a/1190000018028996

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 秋霞鲁丝影院久久人人综合 | 婷婷在线综合 | 免费的毛片视频 | 精品国产国产精2020久久日 | 久久免费国产 | 香蕉人人超人人超碰超国产 | 久久re热在线视频精6 | 欧美一区二区三区免费高 | 近亲乱中文字幕 | 成人精品福利 | 国产原创一区二区 | 被教官揉了一晚上的奶小说 | 热门小说同人h改编h | 外女思春台湾三级 | 免费的强动漫人物 | 色综合色狠狠天天综合色 | 黑人好大好硬好深好爽想要h | 欧美cosplay极品video | v视界影院_vsjla | 俺去俺也在线www色官网 | 好大好硬好深好爽想要之黄蓉 | 热久久天天拍天天拍热久久2018 | 91制片厂制作传媒免费版樱花 | 免费观看欧美成人禁片 | 日韩 国产 欧美 | www.av免费 | 黑人video粗暴日本 | 日韩在线视频免费观看 | 亚洲欧美另类专区 | 无人影院在线播放视频 | 精品女同一区二区三区免费站 | haodiaose在线精品免费观看 | 欧美黑人一级片 | 国产91在线免费 | 91视在线国内在线播放酒店 | 性做久久久久久久久浪潮 | 久久aa毛片免费播放嗯啊 | 男女刺激高清视频在线观看 | 天天干夜夜噜 | 亚洲精品资源在线 | 精品人伦一区二区三区潘金莲 |