1. 程式人生 > 實用技巧 >使用Gradle構建springboot多模組專案,並混合groovy開發

使用Gradle構建springboot多模組專案,並混合groovy開發

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