欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Gradle的基本使用

 更新時間:2021年03月01日 15:55:38   作者:木小豐  
這篇文章主要介紹了Gradle的基本使用方法,幫助大家更好的理解和學(xué)習(xí)Gradle的相關(guān)知識,感興趣的朋友可以了解下

一、Gradle相比Maven的優(yōu)勢

  • 配置簡潔

Maven是用pom.xml管理,引入一個jar包至少5行代碼,Gradle只需要一行。

  • 構(gòu)建速度快

Gradle支持daemon方式運(yùn)行,啟動速度快,同時有基于daemon的增量構(gòu)建,充分利用JVM的運(yùn)行時優(yōu)化,和緩存數(shù)據(jù)構(gòu)建速度相比Maven快很多。

  • 更好的靈活性、擴(kuò)展性

Gradle 相對于 Maven 等構(gòu)建工具, 其提供了一系列的 API 讓我們有能力去修改或定制項(xiàng)目的構(gòu)建過程。

二、基本配置

  • 設(shè)置本地倉庫地址

默認(rèn)本地倉庫地址是:~/.gradle,Windows下會占用大量C盤空間。

設(shè)置環(huán)境變量,GRADLE_USER_HOME=/your/path

  • 復(fù)用Maven本地倉庫

在repositories配置mavenLocal()即可,如果是init.gradle全局配置,參考以下init.gradle文件

Maven本地倉庫查找路徑:

(1)USER_HOME/.m2/settings.xml

(2)M2_HOME/conf/settings.xml

(3)USER_HOME/.m2/repository

  • 國內(nèi)鏡像加速

國內(nèi)訪問國外倉庫地址很慢,第一種方法是在每個項(xiàng)目中設(shè)置repositories

repositories {
 mavenLocal()
 'maven(http://maven.aliyun.com/nexus/content/groups/public/)'
 mavenCentral()
}

更推薦的方式是類似的Maven的settings.xml全局的配置,在上一步配置的GRADLE_USER_HOME路徑下,添加init.gradle文件,以下配置文件中使用了阿里云的Gradle代理,支持jcenter、google、maven倉庫。

gradle.projectsLoaded {
 rootProject.allprojects {
  buildscript {
   repositories {
    def JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter'
    def GOOGLE_URL = 'https://maven.aliyun.com/repository/google'
    def NEXUS_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
    all { ArtifactRepository repo ->
     if (repo instanceof MavenArtifactRepository) {
      def url = repo.url.toString()
      if (url.startsWith('https://jcenter.bintray.com/')) {
       project.logger.lifecycle "Repository ${repo.url} replaced by $JCENTER_URL."
       println("buildscript ${repo.url} replaced by $JCENTER_URL.")
       remove repo
      }
      else if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
       project.logger.lifecycle "Repository ${repo.url} replaced by $GOOGLE_URL."
       println("buildscript ${repo.url} replaced by $GOOGLE_URL.")
       remove repo
      }
      else if (url.startsWith('https://repo1.maven.org/maven2')) {
       project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
       println("buildscript ${repo.url} replaced by $REPOSITORY_URL.")
       remove repo
      }
     }
    }
    jcenter {
     url JCENTER_URL
    }
    google {
     url GOOGLE_URL
    }
    maven {
     url NEXUS_URL
    }
   }
  }
  repositories {
   def JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter'
   def GOOGLE_URL = 'https://maven.aliyun.com/repository/google'
   def NEXUS_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
   all { ArtifactRepository repo ->
    if (repo instanceof MavenArtifactRepository) {
     def url = repo.url.toString()
     if (url.startsWith('https://jcenter.bintray.com/')) {
      project.logger.lifecycle "Repository ${repo.url} replaced by $JCENTER_URL."
      println("buildscript ${repo.url} replaced by $JCENTER_URL.")
      remove repo
     }
     else if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
      project.logger.lifecycle "Repository ${repo.url} replaced by $GOOGLE_URL."
      println("buildscript ${repo.url} replaced by $GOOGLE_URL.")
      remove repo
     }
     else if (url.startsWith('https://repo1.maven.org/maven2')) {
      project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
      println("buildscript ${repo.url} replaced by $REPOSITORY_URL.")
      remove repo
     }
    }
   }
   jcenter {
    url JCENTER_URL
   }
   google {
    url GOOGLE_URL
   }
   maven {
    url NEXUS_URL
   }
  }
 }
}

三、最佳實(shí)踐

  • 多模塊配置

稍微大點(diǎn)的項(xiàng)目都會分模塊開發(fā),Gradle相比Maven的一個優(yōu)勢是用IDEA執(zhí)行一個項(xiàng)目的代碼時,會自動編譯其依賴的其他模塊。

在項(xiàng)目一級目錄下添加settings.gradle配置文件:

rootProject.name = 'my-roject-name'

include 'module1'
include 'module2'

其中module1、module2就是子模塊的文件夾名,在子模塊里需要有一個配置子模塊的build.gradle

模塊內(nèi)依賴,比如module2依賴module1,在module2的build.gradle配置文件里添加:

dependencies {
 compile project(":module1")
}
  • profile支持

profile用來加載不同環(huán)境的的配置文件,在筆者所在公司,推薦dev、test、staging、prod四套環(huán)境。

添加gradle.properties配置文件指定默認(rèn)profile

profile=dev

啟動profile,加載不同路徑下的配置,在build.gradle里添加配置:

ext {
 profile = project['profile']
}
sourceSets {
 main {
  resources {
   srcDirs = ["src/main/resources/", "src/main/profiles/${profile}"]
  }
 }
}

命令行參數(shù)指定profile:

gradle build -Pprofile=prod
  • 初始化gradle項(xiàng)目

安裝gradle,并在項(xiàng)目頂級目錄下執(zhí)行:

gradle init

如果當(dāng)前目錄有pom.xml,接下來會提示是否從Maven項(xiàng)目初始化Gradle項(xiàng)目,選擇yes回車執(zhí)行。

參數(shù)文檔:https://docs.gradle.org/current/userguide/build_init_plugin.html

  • 引入bom文件

pom文件在Maven中是一個很有用的功能,方便多個項(xiàng)目統(tǒng)一版本號,在Maven中配置方式如下:

<dependencyManagement>
  <dependencies>
   <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>${spring-boot.version}</version>
    <type>pom</type>
    <scope>import</scope>
   </dependency>
  </dependencies>
</dependencyManagement>

Gradle有插件支持類似操作:

//引入插件
plugins {
 id "io.spring.dependency-management" version "1.0.10.RELEASE"
}
//引入bom
dependencyManagement {
 imports {
  mavenBom 'org.springframework.boot:spring-boot-dependencies:${spring-boot.version}'
 }
}
//使用bom,不需要執(zhí)行版本號
dependencies {
 implementation "org.springframework.boot:spring-boot-starter-web"
}
  • 引入parent文件

在maven中執(zhí)行parent是管理多個項(xiàng)目常用的方式,parent指定了項(xiàng)目的基本配置,配置方式如下:

<parent>
 <groupId>com.lesofn.blog</groupId>
 <artifactId>test-parent</artifactId>
 <version>0.0.1</version>
</parent>

Maven中的parent有兩個作用,一個是類似bom的統(tǒng)一管理版本,即parent中的:dependencyManagement,另一個是基礎(chǔ)jar包的引用,即父pom中的:dependencies

在Gradle可通過上面的io.spring.dependency-management插件實(shí)現(xiàn)類似的效果:

//引入插件
plugins {
 id "io.spring.dependency-management" version "1.0.10.RELEASE"
}
//引入parent,實(shí)現(xiàn)maven中dependencyManagement的功能,不用指定版本號
dependencyManagement {
 imports {
  mavenBom 'com.lesofn.blog:test-parent:0.0.1'
 }
}
//再次引入parent,實(shí)現(xiàn)maven中dependencies的功能
dependencies {
 implementation 'com.lesofn.blog:test-parent:0.0.1'
}

四、總結(jié)

經(jīng)過以上配置,基本覆蓋了Gradle開發(fā)過程中的大部分問題,如果還有什么問題,歡迎留言討論。

以上就是Gradle的基本使用的詳細(xì)內(nèi)容,更多關(guān)于Gradle 使用的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java實(shí)現(xiàn)AES可逆加密算法

    java實(shí)現(xiàn)AES可逆加密算法

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)AES可逆加密算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • SpringBoot 圖書管理系統(tǒng)(刪除、強(qiáng)制登錄、更新圖書)詳細(xì)代碼

    SpringBoot 圖書管理系統(tǒng)(刪除、強(qiáng)制登錄、更新圖書)詳細(xì)代碼

    在企業(yè)開發(fā)中,通常不采用delete語句進(jìn)行物理刪除,而是使用邏輯刪除,邏輯刪除通過修改標(biāo)識字段來表示數(shù)據(jù)已被刪除,方便數(shù)據(jù)恢復(fù),本文給大家介紹SpringBoot 圖書管理系統(tǒng)實(shí)例代碼,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Spring實(shí)現(xiàn)Quartz自動配置的方法詳解

    Spring實(shí)現(xiàn)Quartz自動配置的方法詳解

    這篇文章主要介紹了Spring實(shí)現(xiàn)Quartz自動配置的方法詳解,如果想在應(yīng)用中使用Quartz任務(wù)調(diào)度功能,可以通過Spring Boot實(shí)現(xiàn)Quartz的自動配置,以下介紹如何開啟Quartz自動配置,以及Quartz自動配置的實(shí)現(xiàn)過程,需要的朋友可以參考下
    2023-11-11
  • Spring Boot 2.0 設(shè)置網(wǎng)站默認(rèn)首頁的實(shí)現(xiàn)代碼

    Spring Boot 2.0 設(shè)置網(wǎng)站默認(rèn)首頁的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Spring Boot 2.0 設(shè)置網(wǎng)站默認(rèn)首頁的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2018-04-04
  • 計(jì)算機(jī)二級考試java軟件操作教程 教大家如何學(xué)習(xí)java

    計(jì)算機(jī)二級考試java軟件操作教程 教大家如何學(xué)習(xí)java

    如何成為一名知識豐富的Java程序員,順利通過計(jì)算機(jī)二級Java考試,這篇文章主要主要教大家如何學(xué)習(xí)java,java的學(xué)習(xí)路線是什么,從何學(xué)起,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 分析Java中為什么String不可變

    分析Java中為什么String不可變

    Java中為什么String是不可變性的。今天我們從多角度解析為什么Java把String做成不可變的。
    2021-06-06
  • 全面了解JAVA_BaseDAO數(shù)據(jù)處理類

    全面了解JAVA_BaseDAO數(shù)據(jù)處理類

    下面小編就為大家?guī)硪黄媪私釰AVA_BaseDAO數(shù)據(jù)處理類。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • 詳解Java異常處理的使用與思考

    詳解Java異常處理的使用與思考

    異常處理的概念起源于早期的編程語言,如?LISP、PL/I?和?CLU。這些編程語言首次引入了異常處理機(jī)制,以便在程序執(zhí)行過程中檢測和處理錯誤情況。本文主要來介紹一下Java中的異常處理,需要的可以參考一下
    2023-04-04
  • Springboot 整合 Java DL4J 實(shí)現(xiàn)醫(yī)學(xué)影像診斷功能介紹

    Springboot 整合 Java DL4J 實(shí)現(xiàn)醫(yī)學(xué)影像診斷功能介紹

    本文介紹如何利用SpringBoot整合Java Deeplearning4j實(shí)現(xiàn)醫(yī)學(xué)影像診斷功能,重點(diǎn)介紹了卷積神經(jīng)網(wǎng)絡(luò)在處理醫(yī)學(xué)影像中的應(yīng)用,以及如何進(jìn)行數(shù)據(jù)預(yù)處理、模型構(gòu)建、訓(xùn)練與預(yù)測,提供了詳細(xì)的代碼實(shí)現(xiàn)和單元測試方法,目的是輔助醫(yī)生更準(zhǔn)確快速地進(jìn)行疾病診斷
    2024-10-10
  • Idea?springboot?springCloud熱加載熱調(diào)試兩種常用方式

    Idea?springboot?springCloud熱加載熱調(diào)試兩種常用方式

    這篇文章主要介紹了Idea?springboot?springCloud熱加載熱調(diào)試常用的兩種方式,在項(xiàng)目開發(fā)的過程中,需要修改調(diào)試的時候偶每次都需要重啟項(xiàng)目浪費(fèi)時間,下面是我整理的兩種常用的兩種方式,需要的朋友可以參考下
    2023-04-04

最新評論