1. 程式人生 > >gradle建立多模組專案

gradle建立多模組專案

第一種方式視覺化的:使用eclipse建立多模組專案示例

新建子專案

  • 按嚮導新建專案gradleFirst
    newProject
    newproject
  • 按嚮導新建專案gradleSecond(過程略)
  • 按嚮導新建專案gradleParent(過程略)

完整的專案列表結構如下
projectlist

可以手工刪除gradleParent中不必要的檔案

配置

修改gradleParent的相關配置

修改settings.gradle

rootProject.name = 'gradleParent'

include   ':gradleFirst', ':gradleSecond'
project(':gradleFirst'
).projectDir = new File(settingsDir, '../gradleFirst') project(':gradleSecond').projectDir = new File(settingsDir, '../gradleSecond')

修改build.gradle

apply plugin: 'java'
apply plugin: 'eclipse'

repositories {
    jcenter()
}

dependencies {   

    testCompile 'junit:junit:4.12'     
}

dependencies {
    compile project(':gradleFirst'
) compile project(':gradleSecond') }

檢視結果

開啟命令列,進入gradleParent目錄,看看有哪些變化

E:\eclipseWS\gradleWS\gradleParent>gradle project

> Task :projects

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'gradleParent'
+--- Project ':gradleFirst' \--- Project ':gradleSecond' To see a list of the tasks of a project, run gradle <project-path>:tasks For example, try running gradle :gradleFirst:tasks BUILD SUCCESSFUL in 1s 1 actionable task: 1 executed E:\eclipseWS\gradleWS\gradleParent>

構建

構建
res

第二種方式:控制檯建立專案然後匯入

專案存放在E:\eclipseWS\gradleWS目錄下,在此專案中建立一個子專案之間的呼叫關係

建立專案總目錄

開啟cmd,進入E:\eclipseWS\gradleWS目錄

C:\Users\Administrator>cd /d E:\eclipseWS\gradleWS

E:\eclipseWS\gradleWS>
E:\eclipseWS\gradleWS>mkdir gradleMain

進入專案主目錄並初始化

E:\eclipseWS\gradleWS\gradleMain>gradle init

BUILD SUCCESSFUL in 2s
2 actionable tasks: 2 executed
E:\eclipseWS\gradleWS\gradleMain>tree /f
資料夾 PATH 列表
卷序列號為 0004-26A4
E:.
│  build.gradle
│  gradlew
│  gradlew.bat
│  settings.gradle
│
├─.gradle
│  ├─4.5.1
│  │  └─taskHistory
│  │          taskHistory.bin
│  │          taskHistory.lock
│  │
│  └─buildOutputCleanup
│          buildOutputCleanup.lock
│          cache.properties
│          outputFiles.bin
│
└─gradle
    └─wrapper
            gradle-wrapper.jar
            gradle-wrapper.properties


E:\eclipseWS\gradleWS\gradleMain>

建立多模組

建立使用的目錄,比如建立三個模組,分別叫做firstModule、secondModule、thirdModule。分別建立main、test、resources

E:\eclipseWS\gradleWS\gradleMain>mkdir firstModule\src\main\java
E:\eclipseWS\gradleWS\gradleMain>mkdir firstModule\src\main\resources
E:\eclipseWS\gradleWS\gradleMain>mkdir firstModule\src\test\java
E:\eclipseWS\gradleWS\gradleMain>mkdir firstModule\src\test\resources
E:\eclipseWS\gradleWS\gradleMain>
E:\eclipseWS\gradleWS\gradleMain>mkdir secondModule\src\main\java
E:\eclipseWS\gradleWS\gradleMain>mkdir secondModule\src\main\resources
E:\eclipseWS\gradleWS\gradleMain>mkdir secondModule\src\test\java
E:\eclipseWS\gradleWS\gradleMain>mkdir secondModule\src\test\resources
E:\eclipseWS\gradleWS\gradleMain>
E:\eclipseWS\gradleWS\gradleMain>mkdir thirdModule\src\main\java
E:\eclipseWS\gradleWS\gradleMain>mkdir thirdModule\src\main\resources
E:\eclipseWS\gradleWS\gradleMain>mkdir thirdModule\src\test\java
E:\eclipseWS\gradleWS\gradleMain>mkdir thirdModule\src\test\resources

配置

修改gradleMain目錄裡的settings.gradle

include 'firstModule','secondModule','thirdModule'

修改gradleMain目錄裡的buid.gradle

/*
 * This file was generated by the Gradle 'init' task.
 *
 * This is a general purpose Gradle build.
 * Learn how to create Gradle builds at https://guides.gradle.org/creating-new-gradle-builds/
 */
// 所有子專案的通用配置
/*
 * This file was generated by the Gradle 'init' task.
 *
 * This is a general purpose Gradle build.
 * Learn how to create Gradle builds at https://guides.gradle.org/creating-new-gradle-builds/
 */
// 所有子專案的通用配置
subprojects {
    apply plugin: 'java'
    apply plugin: 'eclipse'

    version = '1.0'

    // JVM 版本號要求
    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    // java編譯的時候預設狀態下會因為中文字元而失敗
    [compileJava,compileTestJava,javadoc]*.options*.encoding = 'UTF-8'

    //定義版本號
    ext {

    }

    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 {
        // 通用依賴

        // 測試依賴
        testCompile(
                "junit:junit:4.12"
        )
    }
}

分別修改模組的build.gradle

firstModule

archivesBaseName = 'firstModule'

secondModule

archivesBaseName = 'secondModule'
archivesBaseName = 'secondModule'
project.dependencies {
    compile(
            project(':firstModule'),
    )

    testCompile(
            project(':firstModule').sourceSets.test.output,
    )
}

thirdModule

archivesBaseName = 'thirdModule'

編譯

E:\eclipseWS\gradleWS\gradleMain>gradle -i build
E:\eclipseWS\gradleWS\gradleMain>gradle project

> Task :projects

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'gradleMain'
+--- Project ':firstModule'
+--- Project ':secondModule'
\--- Project ':thirdModule'

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


BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed

匯入工程

import->gradle->existing gradle project

projectStruct

分別在firstModule和secondModule中新增程式碼
被依賴
呼叫程式碼

編譯工程

這裡寫圖片描述