之前學過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的了: