springboot-000 搭建gradle多模塊項目


 之前學過springboot,但是因為公司沒有這方面的需求,所以一直沒有用到開發中,正好趁着最近有點時間打算重新做下梳理,做着筆記,加固印象。

這是springboot第一章節,搭建gradle多模塊項目。

gradle是一種構建工具,幫我們構建App。構建包括編譯、打包等過程。在gradle中,每個待編譯的工程就是一個project,構建一個project需要 執行一系列task,如果想讓gradle正確執行task需要我們引入對應的插件。gradle和maven相比,配置更加靈活簡單,相對於maven的xml配置(雖然 通俗易懂,但是很難在xml中描述if、else等這樣有不同條件的任務),gradle采用靈活簡潔的groovy腳本語言,大大簡化了構建代碼的行數,而且groovy是基於java並拓展了java,java程序員可以無縫切換groovy開發程序,groovy就是把寫java變的像寫腳本一樣簡單,寫完就可以執行,groovy內部會將其編譯成java字節碼,然后啟動虛擬機(jvm)來執行。

接下來就是使用idea搭建gradle多模塊項目了,打開idea,選擇file,創建項目

 

點擊next,選擇項目所在的目錄groupId, 創建項目名稱ArtifactId,點解next,點擊finish。

成功后,項目的目錄如下

 

 

 然后就是搭建其他模塊,點擊項目名稱,右鍵new model,下面頁面基本沒什么需要修改的,點擊next,輸入ArtifactId,點擊next,點擊finish,即可

最后,目錄結構如下 :

 

gradle.properties的配置信息:

org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

 主項目的build.gradle的配置信息如下:

// 指定要應用的插件和版本
plugins {
    id 'java'
    id "org.springframework.boot" version "2.1.2.RELEASE"
    id "io.spring.dependency-management" version "1.0.6.RELEASE"
}

// 指定下載的倉庫地址
allprojects {
    repositories {
        maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
        jcenter()
        mavenCentral()
    }
}

group 'com.pf.springboot'

// 指定依賴版本
ext.spring_cloud_version = "Greenwich.RELEASE"
ext['lombok.version'] = "1.18.4"

// 應用於所有依賴的子項目
subprojects {
    version '1.0-SNAPSHOT'
    // 應用插件
    apply plugin: "java"
    apply plugin: "org.springframework.boot"
    apply plugin: "io.spring.dependency-management"

    // 設置編譯和運行的jre兼容版本
    sourceCompatibility = '1.8'
    targetCompatibility = '1.8'

    // 字符編碼處理
    def defaultEncoding = 'UTF-8'
    tasks.withType(AbstractCompile).each { it.options.encoding = defaultEncoding }

    // 生成Java文檔的任務
    javadoc {
        options.encoding = defaultEncoding
        options.addBooleanOption('Xdoclint:none', true)
    }

    // Java編譯任務依賴處理資源的任務
    compileJava.dependsOn(processResources)

    // 指定要運行測試的包
    test {
        include "**/repository/**", "**/service/**", "**/controller/**"
    }

    // spring boot構建任務
    springBoot {
        buildInfo()
    }

    dependencyManagement {
        // 導入maven依賴管理的bom
        imports {
            mavenBom "org.springframework.cloud:spring-cloud-dependencies:${spring_cloud_version}"
            mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
        }
    }

    /*
    * 為所有模塊指定公共的依賴
    * 注意這里有些默認不用再指定版本了,已經由上面的dependencyManagement管理了
    * */
    dependencies {
        annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
        annotationProcessor "org.projectlombok:lombok"
        compileOnly "org.springframework.boot:spring-boot-configuration-processor"
        compileOnly "org.projectlombok:lombok"
        implementation "org.apache.commons:commons-lang3"
        implementation "org.apache.commons:commons-collections4:4.3"
        implementation "org.springframework.boot:spring-boot-starter-web"
//        implementation "org.springframework.boot:spring-boot-starter-jdbc"
        implementation fileTree(dir: 'libs', includes: ['*.jar'])
        testAnnotationProcessor "org.projectlombok:lombok"
        testCompileOnly "org.projectlombok:lombok"
        testImplementation "org.springframework.boot:spring-boot-starter-test"
    }
}

至此基本架構已搭建完成。接下來就要添加各模塊之間的依賴了。首先我們梳理下依賴關系,service->respository;web->service;最后我們是把web打成war包,那么respository和service需要做為jar包被引用,所以,respository的build.gradle如下:

 

service的build.gradle如下:

 

 最后就是web的了:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM