用Idea 2019.3+和Gradle5.2.1+ 構建SpringBoot多專案(二)

yidichaxiang發表於2020-03-12

在企業通常的專案開發中,一個專案往往是多個Project組成的,Gradle也有類似Maven的多專案配置。

首先使用Idea 新建一個Model

選擇使用Gradle建立Model:

輸入Model的名稱

點選 Finish 完成建立

就會在根專案中建立一個子專案,子專案中會包含自己的build.gradle。而setting.gradle只有根專案會有。

開啟build.gradle檔案,會發現根專案和子專案的build.gradle檔案有很多重複的配置,能否在一處配置,所有專案中生效呢?

可以使用allprojects和subprojects實現:

在根專案的build.gradle配置如下內容,子專案就只需要配置自己需要的配置。

  // 根專案及子專案都配置相關外掛、屬性
  allprojects {
      apply plugin: 'java'

      group 'org.hazulnut'
      version '1.0-SNAPSHOT'
      setProperty('sourceCompatibility', 1.8)
  }

  // 子專案都配置相關外掛、屬性
  subprojects {
      repositories {
          mavenCentral()
      }

  }

Gradle基於Groovy,對Groovy還沒認真學習下,藉助idea的智慧提示可以很清楚的知道當前作用域的變數、屬性、函式等,既然Groovy也是基於jvm,那麼直接擼碼:

// 修改子專案的build.gradle檔名稱
rootProject.children.each {
    project ->
        def fileName = project.name.substring(project.name.lastIndexOf('.') + 1)+".gradle"
        project.setBuildFileName(fileName)
}

注:所有專案都是使用同一種命名方式,即nuts.springboot.MODEL, 則上面執行效果是:按照MODEL.gradle作為子專案的構建檔名稱。這段程式碼要放置在setting.gradle 檔案的最後,否則這段程式碼之後引入的專案的構建檔名稱還是build.gradle。若是配置在build.gradle中,無論是根專案還是子專案,都會編譯錯誤:buildFileName欄位是隻讀的。

 修改後效果:

 Github專案 https://github.com/HazelNutsWorkGroup/nuts.springboot.single ,

 Gitee專案   https://gitee.com/sleeber/nuts.springboot.single

 歡迎大家交流。

 

相關文章