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

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

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

服務器之家 - 編程語言 - Java教程 - Gradle構建多模塊項目的方法步驟

Gradle構建多模塊項目的方法步驟

2021-05-05 11:36Heart_K Java教程

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

通常我在使用maven構建項目的時候是將應用項目劃分為多個更小的模塊。

gradle 項目也擁有多于一個組件,我們也將其稱之為多項目構建(multi-project build)。

我們首先創建一個多項目構建:

?
1
2
mkdir cmdgradleproj && cd cmdgradleproj
gradle init

這時候

d:\cmdgradleproj> 目錄下執行:tree /f

的項目結構如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
│ build.gradle
│ gradlew
│ gradlew.bat
│ settings.gradle
├─.gradle
│ └─3.0
│   └─taskartifacts
│       cache.properties
│       cache.properties.lock
│       filehashes.bin
│       filesnapshots.bin
│       filesnapshotstotreesnapshotsindex.bin
│       taskartifacts.bin
│      
└─gradle
  └─wrapper
      gradle-wrapper.jar
      gradle-wrapper.properties

然后,創建多個模塊,這里以 core 和 web 模塊為例,先創建四個目錄(test 文件夾用于編寫測試類):

?
1
2
3
4
mkdir core\src\main\java
mkdir core\src\main\test
mkdir web\src\main\java
mkdir web\src\main\resources

 core模塊 :包含一些通用的組件,它們能夠被程序的其他模塊使用。例子中,只包含一個類:messageservice類返回 ‘hello world!' 字符串。該模塊有兩個依賴:junit 4.11與commons-lang3。

web模塊:模塊包含helloworld類,是程序的開端,它從messageservice對象中獲取信息,并將接收到的信息寫入一個日志文件中。該模塊擁有兩個依賴:它需要core模塊,還使用log4j作為日志。

現在,我們已經創建了所需的目錄,下一步是配置gradle構建,先對包含在多項目構建中的項目進行配置。

我們可以通過以下步驟,對包含在多項目構建中的項目進行配置:

1.在根項目的根目錄下創建 settings.gradle 文件,一個多項目gradle構建必須含有這個文件,因為它指明了那些包含在多項目構建中的項目。

2.確保 web 和 core 項目包含在我們的多項目構建中。

我們的 settings.gradle 文件如下:

include 'core'
include 'web'
簡寫:include 'core','web'

修改根目錄下的 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// 所有子項目的通用配置
subprojects {
  apply plugin: 'java'
  // apply plugin: 'eclipse'
  apply plugin: 'idea'
 
  version = '1.0'
 
  // jvm 版本號要求
  sourcecompatibility = 1.8
  targetcompatibility = 1.8
 
  // java編譯的時候缺省狀態下會因為中文字符而失敗
  [compilejava,compiletestjava,javadoc]*.options*.encoding = 'utf-8'
 
  //定義版本號
  ext {
    springversion = '4.3.3.release'
    hibernateversion='5.2.2.final'
  }
 
  repositories {
    mavencentral()
  }
 
  jar {
    manifest {
      attributes("implementation-title": "gradle")
    }
  }
 
  configurations {
    // 所有需要忽略的包定義在此
    all*.exclude group: 'commons-httpclient'
    all*.exclude group: 'commons-logging'
    all*.exclude group: 'commons-beanutils', module: 'commons-beanutils'
  }
 
  dependencies {
    // 通用依賴
    compile(
        "org.springframework:spring-context:$springversion",
        "org.springframework:spring-orm:$springversion",
        "org.springframework:spring-tx:$springversion",
        "org.springframework.data:spring-data-jpa:1.10.3.release",
        "org.hibernate:hibernate-entitymanager:$hibernateversion",
        "c3p0:c3p0:0.9.1.2",
        "mysql:mysql-connector-java:6.0.4",
        "org.slf4j:slf4j-nop:1.7.21",
        "commons-fileupload:commons-fileupload:1.3.2",
        "com.fasterxml.jackson.core:jackson-databind:2.8.2"
    )
 
    // 依賴maven中不存在的jar
    ext.jartree = filetree(dir: 'libs', include: '**/*.jar')
    ext.rootprojectlibs = new file(rootproject.rootdir, 'libs').getabsolutepath()
    ext.jartree += filetree(dir: rootprojectlibs, include: '**/*.jar')
 
    compile jartree
 
    // 測試依賴
    testcompile(
        "org.springframework:spring-test:$springversion",
        "junit:junit:4.12"
    )
  }
 
  // 顯示當前項目下所有用于 compile 的 jar.
  task listjars(description: 'display all compile jars.') << {
    configurations.compile.each { file file -> println file.name }
  }
}

接下來可以修改 core/build.gradle 來定義 core 模塊的依賴:

?
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
// jar包的名字
archivesbasename = 'core'
 
// 還可以定義其他配置,這里直接繼承父模塊中的配置
 
web 模塊需要依賴 core 模塊,故定義 web/build.gradle 如下:
 
apply plugin:"war"
 
dependencies{
  // 依賴 core 模塊
  compile project(":core")
  compile(
      "org.springframework:spring-webmvc:$springversion",
      "org.apache.taglibs:taglibs-standard-impl:1.2.1"
  )
  //系統提供的依賴
  providedcompile(
      "javax.servlet:javax.servlet-api:3.1.0",
      "javax.servlet.jsp:jsp-api:2.2.1-b03",
      "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1"
  )
}
 
task jarwithoutresources(type: jar) {
  basename project.name
  from("$builddir/classes/main")
}
 
war{
  dependson jarwithoutresources
  from("$projectdir/src/main/resources") {
    include "*.properties"
    into("web-inf/classes")
  }
  classpath=classpath - sourcesets.main.output
  classpath filetree(dir:libsdir, include:"${project.name}-${version}.jar")
}
task('jarpath')<<{
  configurations.runtime.resolve().each {
    print it.tostring()+";"
  }
  println();
}

3. 編譯項目

查看所有 jar:

?
1
2
3
4
5
6
7
> gradle listjars
// 查看各個模塊的依賴:
> gradle :core:dependencies
> gradle :web:dependencies
 
//編譯所有模塊:
> gradle build

對比一下,這時候的目錄如下:

?
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
│  build.gradle
│  gradlew
│  gradlew.bat
│  settings.gradle
│ 
├───.gradle
│  └───3.0
│    └───taskartifacts
│        cache.properties
│        cache.properties.lock
│        filehashes.bin
│        filesnapshots.bin
│        filesnapshotstotreesnapshotsindex.bin
│        taskartifacts.bin
│       
├───core
│  │  build.gradle
│  │ 
│  ├───build
│  │  ├───libs
│  │  │    core-1.0.jar
│  │  │   
│  │  └───tmp
│  │    └───jar
│  │        manifest.mf
│  │       
│  └───src
│    ├───main
│    │  └───java
│    └───test
│      └───java
├───gradle
│  └───wrapper
│      gradle-wrapper.jar
│      gradle-wrapper.properties
│     
└───web
  │  build.gradle
  │ 
  ├───build
  │  ├───libs
  │  │    web-1.0.jar
  │  │    web-1.0.war
  │  │   
  │  └───tmp
  │    ├───jarwithoutresources
  │    │    manifest.mf
  │    │   
  │    └───war
  │        manifest.mf
  │       
  └───src
    └───main
      ├───java
      └───resources

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

原文鏈接:https://www.cnblogs.com/heart-king/p/5909225.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久re视频精品538在线 | 美女的隐私视频免费看软件 | 国产亚洲小视频 | 日本精品久久久久中文字幕 1 | 精品国产精品人妻久久无码五月天 | 猛男强攻变sao货 | 免费观看视频网站 | 大胸纲手被羞羞漫画网站 | 俄罗斯bbbbbbbbb大片 | 成人中文字幕在线观看 | 性绞姿始动作动态图 | 欧美日韩一二三区免费视频观看 | 国产欧美va欧美va香蕉在线观看 | 天海翼最新| 免费看男人使劲躁女人小说 | 半挠脚心半黄的网站 | 精品视频在线免费播放 | 九九九国产在线 | 荡娃艳妇有声小说 | 亚洲欧美专区精品伊人久久 | 女老板用丝袜脚夹我好爽 | 亚洲美洲国产日产 | haodiaocao的视频这里看 | 日本在线播放 | 女教师被学生糟蹋三天 | fuqer日本 | 俄罗斯freeⅹ性欧美 | 国产偷窥女洗浴在线观看亚洲 | 狠狠干在线观看 | 成年人网站免费在线观看 | 国产精品久久久久久久久免费 | 99ri精品| 免费在线看a | 成人看片免费无限观看视频 | 亚洲成人免费 | 婷婷影院在线观看 | 91大神在线精品播放 | 男人都懂www深夜免费网站 | 牧教师在线观看 | 99热久久这里只有精品23 | 亚洲欧美日韩一区成人 |