1. 程式人生 > >gradle在Java專案構建引數詳細解釋

gradle在Java專案構建引數詳細解釋


wechat.jpg

如果需要了解更多細節或答疑,請關注我的公眾號:

總結整理Java專案建立時常見gradle引數的解釋與用法。



首先通過Idea的spring initializr新建一個Gradle構建的Java任務,隨便選擇幾個springboot元件:


選擇Finish,專案新建完畢,開啟build.gradle檔案,會看到以下一些內容,具體三個級別:buildscript/allprojects/repositories已經添加註釋如下(根據自己的專案添加了對應的阿里雲映象以及部分依賴):

//buildScript塊主要是為了Gradle指令碼自身的執行,獲取指令碼依賴外掛。
buildscript {
    ext {
        springBootVersion = '2.1.0.RELEASE'
    }
    repositories {
        mavenLocal()
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

//allprojects塊的repositories用於多專案構建,為所有專案提供共同所需依賴包。而子專案可以配置自己的repositories以獲取自己獨需的依賴包(即下面的repositories)。
allprojects {
    repositories {
        mavenLocal()
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        mavenCentral()
    }
}

//根級別的repositories主要是為了當前專案提供所需依賴包,比如log4j、spring-core等依賴包可從Nexus私服或者mavenCentral倉庫獲得。
repositories {
    mavenLocal()
    maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
    mavenCentral()
}

dependencies {
    //mybatis-generator 外掛
    implementation('org.mybatis.generator:mybatis-generator-core:1.3.7')
    //mybatis-springboot 整合
    implementation('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2')
    //MYSQL5.X版本Driver
    implementation('mysql:mysql-connector-java:5.1.47')
    //mybatis-springboot 測試整合
    testImplementation('org.mybatis.spring.boot:mybatis-spring-boot-starter-test:1.3.2')

    testImplementation('org.springframework.boot:spring-boot-starter-test')
    implementation('org.springframework.boot:spring-boot-starter-jdbc')
}

可以看出我們先通過buildscripts下載對應需要的執行的plugin,然後通過allprojects下載全域性系列依賴,然後通過repositories下載本專案需要的依賴。


其中介紹下以下幾個plugin分別代表的是什麼意思與作用:

對應的前三個plugin引入的Task如上截圖所示,其中:

apply plugin: 'org.springframework.boot'

是用來引入自動構建Springboot相關的Task

apply plugin: 'eclipse'

是用來做對應專案標準化操作的Task

apply plugin: 'java'

是剩餘藍色部分,傳統Java專案對應的一系列構建Task

apply plugin: 'io.spring.dependency-management'

這個Plugin是Springboot2開始引入的新的構建外掛,主要解決的是引用依賴關係的,後續對應的依賴版本都可以忽略不寫,具體如下:

簡介:

        Spring IO Platform是Spring官網中排第一位的專案。它將Spring的核心API整合到一個適用於現代應用程式的平臺中。提供了Spring專案組合中的版本依賴。這些依賴關係是經過測試,可以保證正常工作。


為什麼要使用?

        Spring IO Platform主要是解決依賴版本的衝突問題。舉個栗子:在使用Spring的時候,經常會使用到第三方庫,一般大家都是根據經驗挑選一個版本浩或挑選最新的,其實這是存在隱患的。除非做過完整的測試,保證整合該版本的依賴不會出現問題,否則風險很大,且後續擴充套件會越來越困難。因為隨著業務複雜度的增加,整合的第三方元件會越來會多,依賴之間的關聯也會也來越複雜。

        Spring IO Platform正好解決了這些問題,在我們新增第三方依賴時,不需要寫版本號,它能自動幫我們選擇一個最優的版本,保證最大限度的擴充套件。


最後如果有上傳到私服需要的話,引入maven plugin和uploadArchives Task,執行gradle upload 命令即可上傳jar包至對應私服,具體配置如下:

apply plugin: 'maven'
uploadArchives {
    repositories {
        mavenDeployer {
            //SNAPSHOT版本提交地址
            snapshotRepository(url: 'http://maven.nexus.com/nexus/content/repositories/snapshots/') {
                authentication(userName: 'admin', password: 'abc123')
            }

            //正式版本提交地址
            repository(url: 'http://maven.nexus.com/nexus/content/repositories/releases/') {
                authentication(userName: 'admin', password: 'abc123')
            }
            pom.groupId = group
            pom.version = version
            pom.artifactId = 'mybatisspringboot'
        }
    }
}


基本完成,以上就是99%常規專案中涉及的外掛以及對應Task。


如果需要了解更多細節或答疑,請關注我的公眾號:

wechat.jpg