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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

grade java_Gradle Java 构建入门

發布時間:2025/3/11 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 grade java_Gradle Java 构建入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java 構建入門

Java 插件

如你所見,Gradle 是一個通用工具。它可以通過腳本構建任何你想要實現的東西,真正實現開箱即用。但前提是你需要在腳本中編寫好代碼才行。

大部分 Java 項目基本流程都是相似的:編譯源文件,進行單元測試,創建 jar 包。使用 Gradle 做這些工作不必為每個工程都編寫代碼。Gradle 已經提供了完美的插件來解決這些問題。插件就是 Gradle 的擴展,簡而言之就是為你添加一些非常有用的默認配置。Gradle 自帶了很多插件,并且你也可以很容易的編寫和分享自己的插件。Java plugin 作為其中之一,為你提供了諸如編譯,測試,打包等一些功能。

Java 插件為工程定義了許多默認值,如Java源文件位置。如果你遵循這些默認規則,那么你無需在你的腳本文件中書寫太多代碼。當然,Gradle 也允許你自定義項目中的一些規則,實際上,由于對 Java 工程的構建是基于插件的,那么你也可以完全不用插件自己編寫代碼來進行構建。

后面的章節我們通過許多深入的例子介紹了如何使用 Java 插件來進行以來管理和多項目構建等。但在這個章節我們需要先了解 Java 插件的基本用法。

一個基本 Java 項目

來看一下下面這個小例子,想用 Java 插件,只需增加如下代碼到你的腳本里。

采用 Java 插件

build.gradle

apply plugin: 'java'

備注:示例代碼可以在 Gralde 發行包中的 samples/java/quickstart 下找到。

定義一個 Java 項目只需如此而已。這將會為你添加 Java 插件及其一些內置任務。

添加了哪些任務?

你可以運行 gradle tasks 列出任務列表。這樣便可以看到 Java 插件為你添加了哪些任務。

標準目錄結構如下:

project

+build

+src/main/java

+src/main/resources

+src/test/java

+src/test/resources

Gradle 默認會從 src/main/java 搜尋打包源碼,在 src/test/java 下搜尋測試源碼。并且 src/main/resources 下的所有文件按都會被打包,所有 src/test/resources 下的文件 都會被添加到類路徑用以執行測試。所有文件都輸出到 build 下,打包的文件輸出到 build/libs 下。

構建項目

Java 插件為你添加了眾多任務。但是它們只是在你需要構建項目的時候才能發揮作用。最常用的就是 build 任務,這會構建整個項目。當你執行 gradle build 時,Gralde 會編譯并執行單元測試,并且將 src/main/* 下面 class 和資源文件打包。

構建 Java 項目

運行 gradle build 的輸出結果

Output of gradle build

> gradle build

:compileJava

:processResources

:classes

:jar

:assemble

:compileTestJava

:processTestResources

:testClasses

:test

:check

:build

BUILD SUCCESSFUL

Total time: 1 secs

其余一些較常用的任務有如下幾個:

clean

刪除 build 目錄以及所有構建完成的文件。

assemble

編譯并打包 jar 文件,但不會執行單元測試。一些其他插件可能會增強這個任務的功能。例如,如果采用了 War 插件,這個任務便會為你的項目打出 War 包。

check

編譯并測試代碼。一些其他插件也可能會增強這個任務的功能。例如,如果采用了 Code-quality 插件,這個任務會額外執行 Checkstyle。

外部依賴

通常,一個 Java 項目擁有許多外部依賴。你需要告訴 Gradle 如何找到并引用這些外部文件。在 Gradle 中通常 Jar 包都存在于倉庫中。倉庫可以用來搜尋依賴或發布項目產物。下面是一個采用 Maven 倉庫的例子。

添加 Maven 倉庫

build.gradle

repositories {

mavenCentral()

}

添加依賴。這里聲明了編譯期所需依賴 commons-collections 和測試期所需依賴 junit。

添加依賴

build.gradle

dependencies {

compile group: 'commons-collections', name: 'commons-collections', version: '3.2'

testCompile group: 'junit', name: 'junit', version: '4.+'

}

了解更多可參閱依賴管理基礎

自定義項目

Java 插件為你的項目添加了眾多默認配置。這些默認值通常對于一個普通項目來說已經足夠了。但如果你覺得不適用修改起來也很簡單。看下面的例子,我們為 Java 項目指定了版本號以及所用的 JDK 版本,并且添加一些屬性到 mainfest 中。

自定義 MANIFEST.MF

build.gradle

sourceCompatibility = 1.5

version = '1.0'

jar {

manifest {

attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version

}

}

都有哪些可用屬性?

可以執行 gradle propertie s來得到項目的屬性列表。用這條命令可以看到插件添加的屬性以及默認值。

Java 插件添加的都是一些普通任務,如同他們寫在 Build 文件中一樣。這意味著前面章節展示的機制都可以用來修改這些任務的行為。例如,可以設置任務的屬性,添加任務行為,更改任務依賴,甚至是重寫覆蓋整個任務。在下面的例子中,我們將修改 test 任務,這是一個 Test 類型任務。讓我們來在它執行時為它添加一些系統屬性。

為 test 添加系統屬性

build.gradle

test {

systemProperties 'property': 'value'

}

發布 jar 包

如何發布 jar 包?你需要告訴 Gradle 發布到到哪。在 Gradle 中 jar 包通常被發布到某個倉庫中。在下面的例子中,我們會將 jar 包發布到本地目錄。當然你也可以發布到遠程倉庫或多個遠程倉庫中。

發布 jar 包

build.gradle

uploadArchives {

repositories {

flatDir {

dirs 'repos'

}

}

}

執行 gradle uploadArchives 以發布 jar 包。

創建 Eclipse 文件

若要把項目導入 Eclipse 中,你需要添加另外一個插件到你的腳本文件中。

Eclipse plugin

build.gradle

apply plugin: 'eclipse'

執行 gradle eclipse 來生成 Eclipse 項目文件。

示例匯總

這是示例代碼匯總得到的一個完整腳本:

Java 示例 - 一個完整構建腳本

build.gradle

apply plugin: 'java'

apply plugin: 'eclipse'

sourceCompatibility = 1.5

version = '1.0'

jar {

manifest {

attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version

}

}

repositories {

mavenCentral()

}

dependencies {

compile group: 'commons-collections', name: 'commons-collections', version: '3.2'

testCompile group: 'junit', name: 'junit', version: '4.+'

}

test {

systemProperties 'property': 'value'

}

uploadArchives {

repositories {

flatDir {

dirs 'repos'

}

}

}

多項目構建

現在來看一個典型的多項目構建的例子。項目結構如下:

多項目構建-項目結構

Build layout

multiproject/

api/

services/webservice/

shared/

備注: 本示例代碼可在 Gradle 發行包的 samples/java/multiproject 位置找到

此處有三個工程。api 工程用來生成給客戶端用的 jar 文件,這個 jar 文件可以為 XML webservice 提供 Java 客戶端。webservice 是一個 web 應用,生成 XML。shared 工程包含的是前述兩個工程共用的代碼。

多項目構建定義

定義一個多項目構建工程需要在根目錄(本例中與 multiproject 同級)創建一個setting 配置文件來指明構建包含哪些項目。并且這個文件必需叫 settings.gradle 本例的配置文件如下:

多項目構建中的 settings.gradle

settings.gradle

include "shared", "api", "services:webservice", "services:shared"

公共配置

對多項目構建而言,總有一些共同的配置.在本例中,我們會在根項目上采用配置注入的方式定義一些公共配置。根項目就像一個容器,子項目會迭代訪問它的配置并注入到自己的配置中。這樣我們就可以簡單的為所有工程定義主配置單了:

多項目構建-公共配置

build.gradle

subprojects {

apply plugin: 'java'

apply plugin: 'eclipse-wtp'

repositories {

mavenCentral()

}

dependencies {

testCompile 'junit:junit:4.11'

}

version = '1.0'

jar {

manifest.attributes provider: 'gradle'

}

}

值得注意的是我們為每個子項目都應用了 Java 插件。這意味著我們在前面章節學習的內容在子項目中也都是可用的。所以你可以在根項目目錄進行編譯,測試,打包等所有操作。

工程依賴

同一個構建中可以建立工程依賴,一個工程的 jar 包可以提供給另外一個工程使用。例如我們可以讓 api 工程以依賴于 shared 工程的 jar 包。這樣 Gradle 在構建 api 之前總是會先構建 shared 工程。

多項目構建-工程依賴

api/build.gradle

dependencies {

compile project(':shared')

}

打包發布

如何發布,請看下文:

多項目構建-發布

api/build.gradle

task dist(type: Zip) {

dependsOn spiJar

from 'src/dist'

into('libs') {

from spiJar.archivePath

from configurations.runtime

}

}

artifacts {

archives dist

}

下一步目標?

本章中,我們了解了如何構建一個基本 Java 工程。但這都是一小部分基礎,用 Gradle 還可以做很多事。關于 了解更多可參閱 Java 插件,The Java Plugin,并且你可以在 Gradle 發行包中的 samples/java 目錄找到更多例子。

另外,不要忘了繼續閱讀依賴管理基礎內容

總結

以上是生活随笔為你收集整理的grade java_Gradle Java 构建入门的全部內容,希望文章能夠幫你解決所遇到的問題。

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