1. 程式人生 > 實用技巧 >3.Gradle構建Java專案

3.Gradle構建Java專案

1. Java開發

Java外掛是Gradle自身裝載的一個外掛。Java外掛提供的基本功能遠比原始碼編譯和打包多。它為你的專案建立了一個標準的專案佈局,並確保有意義、有順序地執行任務。現在,為你的專案建立一個構建指令碼並使用Java外掛。

1.1 使用外掛

使用java外掛

apply plugin: 'java'

1.2 定製專案

可以修改專案和外掛屬性

apply plugin: 'java'

version = 0.1
// 設定java版本編譯相容1.6
sourceCompatibility = 1.6

jar {
    manifest {
        attributes 'Main-Class': 'com.manning.gia.todo.ToDoApp'
    }
}

可以修改專案結構

apply plugin: 'java'

version = 0.1
sourceCompatibility = 1.6

// 指定打包jar的啟動類屬性
jar {
    manifest {
        attributes 'Main-Class': 'com.manning.gia.todo.ToDoApp'
    }
}

// 修改專案結構
sourceSets {
    main {
        java {
            srcDirs = ['src']
        }
    }
    test {
        java {
            srcDirs = ['test']
        }
    }
}

// 指定編譯後文件輸出目錄
buildDir = 'out'

1.3 使用外部依賴

定義倉庫

repositories {
    // 配置對maven central倉庫的訪問快捷方式
    mavenCentral()
}

定義依賴

dependencies {
    compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.1'
}

2. web開發

build.gradle

// 配置外掛
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'jetty'

// 配置倉庫地址
repositories {
    mavenCentral()
}

// 配置依賴
dependencies {
    providedCompile 'javax.servlet:servlet-api:2.5'
    runtime 'javax.servlet:jstl:1.1.2'
}

// 定製jetty外掛
jettyRun {
    httpPort = 9090
    contextPath = 'todo'
}

// 改變web的原始碼目錄,預設webapp
webAppDirName = 'webfiles'

// 將css和js目錄轉移到war根目錄下的static下
war {
    from 'static'
}

構建專案

gradle build

執行jetty

gradle jettyRun

3. Gradle包裝器

它是 Gradle 的核心特性,能夠讓機器在沒有安裝 Gradle 執行時的情況下執行Gradle 構建。它也讓構建指令碼執行在一個指定的 Gradle 版本上。它是通過自動從中心倉庫下載 Gradle 執行時,解壓和使用來實現的。最終的目標是創造一個獨立於系統、 系統配置和 Gradle 版本的可靠和可重複的構建。

3.1 配置包裝器

在構建指令碼中新增包裝器任務

task wrapper(type: Wrapper) {
    //指定要使用的gradle版本
    gradleVersion = '5.0'
}

同時提供用於linux和windows使用的指令碼 gradlew 和 gradlew.bat

3.2 使用包裝器

gradlew.bat jettyRun

當包裝器任務被執行時,Gradle 執行時會被下載、解包並使用

3.3 定製包裝器

task wrapper(type: Wrapper) {
    //請求的gradle版本
    gradleVersion = '5.0'
    //獲取gradle包裝器的地址
    distributionUrl = 'http://myenterprise.com/gradle/dists'
    //包裝器被解壓後存放的相對路徑
    distributionPath = 'gradle-dists'
}

4. 參考

  1. 《實戰Gradle 中文版》