日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gradle构建多模块项目_Gradle入门:创建多项目构建

發布時間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gradle构建多模块项目_Gradle入门:创建多项目构建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

gradle構建多模塊項目

盡管我們可以僅使用一個模塊來創建一個運行中的應用程序,但有時將我們的應用程序劃分為多個較小的模塊是比較明智??的。

因為這是一個相當普遍的用例,所以每個自重的構建工具都必須支持它,Gradle也不例外。 如果Gradle項目具有多個模塊,則稱為多項目構建。

這篇博客文章描述了如何使用Gradle創建多項目構建。

讓我們開始看看Gradle構建的需求。

補充閱讀:

如果您不熟悉Gradle, 則應先閱讀以下博客文章,然后再繼續閱讀此博客文章:

  • Gradle入門:簡介可幫助您安裝Gradle,描述Gradle構建的基本概念,并描述如何使用Gradle插件向構建中添加功能。
  • Gradle入門:我們的第一個Java項目描述了如何使用Gradle創建Java項目并將應用程序打包到可執行jar文件中。
  • Gradle入門:依賴性管理介紹了如何管理Gradle項目的依賴性。

我們的Gradle構建要求

我們的示例應用程序具有兩個模塊:

  • 核心模塊包含我們應用程序的其他模塊所使用的通用組件。 在我們的例子中,它僅包含一個類: MessageService類返回字符串“ Hello World!”。 該模塊只有一個依賴性:它具有一個使用Junit 4.11的單元測試。
  • app模塊包含HelloWorld類,該類啟動我們的應用程序,從MessageService對象獲取消息,并將接收到的消息寫入日志文件。 該模塊具有兩個依賴性:它需要核心模塊,并使用Log4j 1.2.17作為日志記錄庫。

我們的Gradle版本還具有其他兩個要求:

  • 我們必須能夠使用Gradle運行我們的應用程序。
  • 我們必須能夠創建不使用所謂的“胖罐”方法的可運行二進制分發。

如果您不知道如何使用Gradle運行應用程序并創建可運行的二進制發行版,
您應先閱讀以下博客文章,然后再繼續閱讀此博客文章:

  • Gradle入門:創建二進制分發

讓我們繼續前進,了解如何創建滿足我們要求的多項目構建。

創建多項目構建

我們的下一步是創建一個包含兩個子項目的多項目Gradle構建: app和core 。 讓我們從創建Gradle構建的目錄結構開始。

創建目錄結構

因為核心和應用程序模塊使用Java,所以它們都使用Java項目的默認項目布局 。 我們可以按照以下步驟創建正確的目錄結構:

  • 創建核心模塊( core )的根目錄,并創建以下子目錄:
    • src / main / java目錄包含核心模塊的源代碼。
    • src / test / java目錄包含核心模塊的單元測試。
  • 創建應用程序模塊( app )的根目錄,并創建以下子目錄:
    • src / main / java目錄包含應用程序模塊的源代碼。
    • src / main / resources目錄包含應用程序模塊的資源。
  • 現在,我們已經創建了所需的目錄。 下一步是配置Gradle構建。 讓我們從配置多項目構建中包含的項目開始。

    配置我們的多項目構建中包含的項目

    通過執行以下步驟,我們可以配置包含在多項目構建中的項目:

  • 將settings.gradle文件創建到根項目的根目錄。 多項目Gradle構建必須具有此文件,因為它指定了多項目構建中包含的項目。
  • 確保應用程序和核心項目包含在我們的多項目版本中。
  • 我們的settings.gradle文件如下所示:

    include 'app' include 'core'

    補充閱讀:

    • Gradle用戶指南:56.2設置文件
    • Gradle DSL參考:設置

    讓我們繼續并配置核心項目。

    配置核心項目

    我們可以按照以下步驟配置核心項目:

  • 將build.gradle文件創建到核心項目的根目錄。
  • 通過應用Java插件來創建Java項目。
  • 確保核心項目從中央Maven2存儲庫獲取其依賴項。
  • 聲明JUnit依賴關系(版本4.11)并使用testCompile配置。 此配置描述了核心項目在可以對其單元測試進行編譯之前需要JUnit庫。
  • 核心項目的build.gradle文件如下所示:

    apply plugin: 'java'repositories {mavenCentral() }dependencies {testCompile 'junit:junit:4.11' }

    補充閱讀:

    • Gradle入門:我們的第一個Java項目
    • Gradle入門:依賴管理

    讓我們繼續并配置應用程序項目。

    配置應用程序項目

    在配置應用程序項目之前,我們必須快速瀏覽屬于同一多項目構建的此類依賴項的依賴項管理。 這些依賴關系稱為項目依賴關系。

    如果我們的多項目構建具有項目A和B,并且項目B的編譯需要項目A,則可以通過將以下依賴項聲明添加到項目B的build.gradle文件中來配置此依賴項:

    dependencies {compile project(':A') }

    補充閱讀:

    • Gradle用戶指南:51.4.3。 項目依賴
    • Gradle用戶指南:57.7。 項目庫依賴項

    現在,我們可以按照以下步驟配置應用程序項目:

  • 將build.gradle文件創建到應用程序項目的根目錄。
  • 通過應用Java插件來創建Java項目。
  • 確保應用程序項目從中央Maven2存儲庫獲取其依賴項。
  • 配置所需的依賴項。 該應用程序項目在編譯時具有兩個依賴項:
    • Log4j(版本1.2.17)
    • 核心模塊
  • 創建一個可運行的二進制發行版 。
  • 該應用程序項目的build.gradle文件如下所示:

    apply plugin: 'application' apply plugin: 'java'repositories {mavenCentral() }dependencies {compile 'log4j:log4j:1.2.17'compile project(':core') }mainClassName = 'net.petrikainulainen.gradle.client.HelloWorld'task copyLicense {outputs.file new File("$buildDir/LICENSE")doLast {copy {from "LICENSE"into "$buildDir"}} }applicationDistribution.from(copyLicense) {into "" }

    補充閱讀:

    • Gradle入門:創建二進制分發

    讓我們繼續并刪除從核心和應用程序項目的構建腳本中找到的重復配置。

    刪除重復的配置

    當我們配置多項目構建的子項目時,我們向核心和應用項目的構建腳本添加了重復的配置:

    • 因為兩個項目都是Java項目,所以它們都應用Java插件。
    • 這兩個項目都使用中央Maven 2存儲庫。

    換句話說,兩個構建腳本都包含以下配置:

    apply plugin: 'java'repositories {mavenCentral() }

    讓我們將此配置移到我們的根項目的build.gradle文件中。 在執行此操作之前,我們必須學習如何在根項目的build.gradle文件中配置子項目。

    如果要將配置添加到名為core的單個子項目中,則必須將以下代碼段添加到根項目的build.gradle文件中:

    project(':core') {//Add core specific configuration here }

    換句話說,如果要將重復的配置移到根項目的構建腳本中,則必須將以下配置添加到其build.gradle文件中:

    project(':app') {apply plugin: 'java'repositories {mavenCentral()} }project(':core') {apply plugin: 'java'repositories {mavenCentral()} }

    這并沒有真正改變我們的處境。 我們的構建腳本中仍然有重復的配置。 唯一的區別是,現在可以從根項目的build.gradle文件中找到重復的配置。 讓我們消除這種重復的配置。

    如果要將通用配置添加到根項目的子項目中,則必須將以下代碼段添加到根項目的build.gradle文件中:

    subprojects {//Add common configuration here }

    從根項目的build.gradle文件中刪除重復的配置后,其外觀如下:

    subprojects {apply plugin: 'java'repositories {mavenCentral()} }

    如果我們擁有多項目構建中所有項目共享的配置,則應將以下代碼段添加到
    我們的根項目的build.gradle文件:

    allprojects {//Add configuration here }

    補充閱讀:

    • Gradle用戶指南:57.1跨項目配置
    • Gradle用戶指南:57.2子項目配置

    現在,我們可以從子項目的構建腳本中刪除重復的配置。 我們的子項目的新構建腳本如下所示:

    core / build.gradle文件如下所示:

    dependencies {testCompile 'junit:junit:4.11' }

    app / build.gradle文件如下所示:

    apply plugin: 'application'dependencies {compile 'log4j:log4j:1.2.17'compile project(':core') }mainClassName = 'net.petrikainulainen.gradle.client.HelloWorld'task copyLicense {outputs.file new File("$buildDir/LICENSE")doLast {copy {from "LICENSE"into "$buildDir"}} }applicationDistribution.from(copyLicense) {into "" }

    現在,我們已經創建了一個多項目Gradle構建。 讓我們找出我們剛剛做了什么。

    我們只是做什么?

    當我們在多項目構建的根目錄中運行命令gradle projects時,我們看到以下輸出:

    > gradle projects :projects------------------------------------------------------------ Root project ------------------------------------------------------------Root project 'multi-project-build' +--- Project ':app' \--- Project ':core'To see a list of the tasks of a project, run gradle <project-path>:tasks For example, try running gradle :app:tasksBUILD SUCCESSFUL

    如我們所見,此命令列出了根項目的子項目( app和core )。 這意味著我們剛剛創建了一個具有兩個子項目的多項目Gradle構建。

    當在多項目構建的根目錄中運行命令gradle任務時,我們看到以下輸出(下面僅顯示了相關部分):

    > gradle tasks :tasks------------------------------------------------------------ All tasks runnable from root project ------------------------------------------------------------Application tasks ----------------- distTar - Bundles the project as a JVM application with libs and OS specific scripts. distZip - Bundles the project as a JVM application with libs and OS specific scripts. installApp -Installs the project as a JVM application along with libs and OS specific scripts run - Runs this project as a JVM application

    如我們所見,我們可以使用Gradle運行應用程序,并創建一個不使用所謂的“胖罐”方法的二進制發行版。 這意味著我們已經滿足了Gradle構建的所有要求。

    附加信息:

    • Gradle用戶指南:11.6。 獲取有關構建的信息

    讓我們繼續前進,找出從這篇博客文章中學到的知識。

    摘要

    這篇博客文章教會了我們三件事:

    • 多項目構建必須在根項目的根目錄中具有settings.gradle文件,因為它指定了多項目構建中包含的項目。
    • 如果必須在多項目構建的所有項目中添加通用配置或行為,則應將此配置(使用allprojects )添加到根項目的build.gradle文件中。
    • 如果必須在根項目的子項目中添加通用配置或行為,則應將此配置(使用subprojects )添加到根項目的build.gradle文件中。

    PS:您可以從Github獲得此博客文章的示例應用程序 。

    翻譯自: https://www.javacodegeeks.com/2015/01/getting-started-with-gradle-creating-a-multi-project-build.html

    gradle構建多模塊項目

    總結

    以上是生活随笔為你收集整理的gradle构建多模块项目_Gradle入门:创建多项目构建的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。