用Idea 2019.3+和Gradle5.2.1+ 構建 Java多項目(二)

在企業通常的項目開發中,一個項目往往是多個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

 歡迎大家交流。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章