使用Gradle構建springboot多模組專案,並混合groovy開發
阿新 • • 發佈:2021-01-07
idea設定本地gradle
打包:
build.gradle
//宣告gradle指令碼自身需要使用的資源,優先執行 buildscript { ext { springBootVersion = '2.1.4.RELEASE' } repositories { // 本地maven倉庫 mavenLocal() maven { url = 'http://maven.aliyun.com/nexus/content/groups/public/' } //和maven中央倉庫一樣的另一個依賴管理倉庫,主要是java jcenter() } dependencies { classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}" } } // allprojects 所有專案共享的配置 allprojects { apply plugin: 'idea' apply plugin: 'java-library' version = '1.0' sourceCompatibility = 11 targetCompatibility = 11 } // subprojects : 所有子模組共享的配置 subprojects { apply plugin: 'java' apply plugin: 'org.springframework.boot' //使用springboot外掛 apply plugin: 'io.spring.dependency-management' //版本管理外掛 // java編譯的時候預設狀態下會因為中文字元而失敗 [compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8' // 配置所有子模組的依賴倉庫地址 repositories { // 本地maven倉庫 mavenLocal() maven { url = 'http://maven.aliyun.com/nexus/content/groups/public/' } //和maven中央倉庫一樣的另一個依賴管理倉庫,主要是java jcenter() } //所有子模組共有依賴 dependencies{ implementation 'org.codehaus.groovy:groovy' testImplementation 'org.springframework.boot:spring-boot-starter-test' } }
settings.gradle
// 父專案名稱 rootProject.name = 'blog-system' // 匯入子模組 include 'blog-web','blog-service','blog-pojo','blog-dao','blog-admin'
使用api解決多重依賴
dao 模組依賴
dependencies { // 使用api 暴露依賴,對其他模組可見,不用重複引用 api (project(':blog-pojo')) api 'mysql:mysql-connector-java:8.0.15' api 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.1' api 'com.zaxxer:HikariCP' // 連線池 api 'com.github.pagehelper:pagehelper:5.1.10' implementation 'org.springframework.boot:spring-boot-starter' }
使用api之後,service模組依賴dao模組是, api的依賴是可見的,就不用重複依賴了:
service
dependencies { api (project(':blog-dao')) implementation 'org.springframework.boot:spring-boot-starter' }
web模組
// 引入外掛新寫法 plugins { id 'war' id 'groovy' } //舊寫法 //apply plugin : "war" archivesBaseName = 'blog-web' /** * SourceSets: 指定資源路徑 */ sourceSets.main.java.srcDirs = [] // 指定groovy編譯路徑,不指定groovy類不會編譯 sourceSets.main.groovy.srcDirs += ["src/main/java"] /** * api 用於取代compile(已被廢棄) * api或compile關鍵字引用的包對於其他module來說是可見的, * implementation關鍵字引用的包對於其他module來說是不可見的。 */ dependencies{ implementation (project(':blog-service')) implementation 'org.springframework.boot:spring-boot-starter-web' // 打包成war包 providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' }
使用souceSets混合編譯java和Groovy
必須新增這個才會編譯groovy類
/** * SourceSets: 指定資源路徑 */ sourceSets.main.java.srcDirs = [] // 指定groovy編譯路徑,不指定groovy類不會編譯 sourceSets.main.groovy.srcDirs += ["src/main/java"]
專案結構
新增lombok
dependencies { // guava 工具包 api 'com.google.guava:guava:27.1-jre' // gradle5.0版本以上引入需要這種形式 compileOnly 'org.projectlombok:lombok:1.18.8' annotationProcessor 'org.projectlombok:lombok:1.18.8' implementation 'org.springframework.boot:spring-boot-starter' }
最後貼上我的Gradle專案:https://gitee.com/houzheng1216/blog_system
轉載於:https://www.cnblogs.com/houzheng/p/11024865.html