成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

使用Gradle構(gòu)建Java項(xiàng)目

xiaokai / 3203人閱讀

摘要:要從頭開始,請(qǐng)繼續(xù)使用構(gòu)建。文件夾應(yīng)包含項(xiàng)目運(yùn)行單元測(cè)試的報(bào)告。由于該項(xiàng)目尚未進(jìn)行任何單元測(cè)試,因此該報(bào)告無效。使用構(gòu)建項(xiàng)目是啟動(dòng)構(gòu)建的首選方式。現(xiàn)在可用于構(gòu)建項(xiàng)目。概要恭喜您現(xiàn)在已經(jīng)創(chuàng)建了一個(gè)簡(jiǎn)單而有效的構(gòu)建文件,用于構(gòu)建項(xiàng)目。

本指南將引導(dǎo)您使用Gradle構(gòu)建一個(gè)簡(jiǎn)單的Java項(xiàng)目。

你要構(gòu)建什么

您將創(chuàng)建一個(gè)簡(jiǎn)單的應(yīng)用程序,然后使用Gradle構(gòu)建它。

你需要什么

大約15分鐘

最喜歡的文本編輯器或IDE

JDK 6或更高版本

如何完成本指南

與大多數(shù)Spring入門指南一樣,您可以從頭開始并完成每個(gè)步驟,或者您可以繞過您已熟悉的基本設(shè)置步驟。無論哪種方式,您最終都會(huì)使用工作代碼。

從頭開始,請(qǐng)繼續(xù)使用Gradle構(gòu)建。

跳過基礎(chǔ)知識(shí),請(qǐng)執(zhí)行以下操作:

下載并解壓縮本指南的源存儲(chǔ)庫(kù),或使用Git克隆它:

git clone https://github.com/spring-guides/gs-gradle.git

進(jìn)入gs-gradle/initial

跳轉(zhuǎn)到安裝Gradle。

完成后,可以根據(jù)gs-gradle/complete中的代碼檢查結(jié)果。

設(shè)置項(xiàng)目

首先,您要為Gradle建立一個(gè)Java項(xiàng)目。為了保持對(duì)Gradle的關(guān)注,讓項(xiàng)目盡可能簡(jiǎn)單。

創(chuàng)建目錄結(jié)構(gòu)

在您選擇的項(xiàng)目目錄中,創(chuàng)建以下子目錄結(jié)構(gòu);例如,在*nix系統(tǒng)上使用mkdir -p src/main/java/hello:

└── src
    └── main
        └── java
            └── hello

src/main/java/hello目錄中,您可以創(chuàng)建所需的任何Java類。為了簡(jiǎn)單起見并與本指南的其余部分保持一致,Spring建議您創(chuàng)建兩個(gè)類:HelloWorld.javaGreeter.java。

src/main/java/hello/HelloWorld.java

package hello;

public class HelloWorld {
  public static void main(String[] args) {
    Greeter greeter = new Greeter();
    System.out.println(greeter.sayHello());
  }
}

src/main/java/hello/Greeter.java

package hello;

public class Greeter {
  public String sayHello() {
    return "Hello world!";
  }
}
安裝Gradle

現(xiàn)在您有了一個(gè)可以使用Gradle構(gòu)建的項(xiàng)目,您就可以安裝Gradle了。

強(qiáng)烈建議使用安裝程序:

SDKMAN

Homebrew(brew install gradle)

最后,如果這些工具都不適合您的需要,您可以從http://www.gradle.org/downloads下載二進(jìn)制文件。只有二進(jìn)制文件是必需的,所以要查找到gradle-version-bin.zip 的鏈接。(您也可以選擇gradle-version-all.zip以獲取源代碼和文檔以及二進(jìn)制文件。)

將文件解壓縮到您的計(jì)算機(jī),然后將bin文件夾添加到您的路徑中。

要測(cè)試Gradle安裝,請(qǐng)從命令行運(yùn)行Gradle:

gradle

如果一切順利,您會(huì)看到一條歡迎信息:

:help

Welcome to Gradle 2.3.

To run a build, run gradle  ...

To see a list of available tasks, run gradle tasks

To see a list of command-line options, run gradle --help

BUILD SUCCESSFUL

Total time: 2.675 secs

您現(xiàn)在安裝了Gradle。

了解Gradle可以做些什么

現(xiàn)在已經(jīng)安裝了Gradle,看看它能做什么。在為項(xiàng)目創(chuàng)建build.gradle文件之前,您可以詢問它可用的任務(wù):

gradle tasks

您應(yīng)該看到可用任務(wù)列表。假設(shè)您在沒有build.gradle文件的文件夾中運(yùn)行Gradle ,您將看到一些非?;镜娜蝿?wù),例如:

:tasks

== All tasks runnable from root project

== Build Setup tasks
setupBuild - Initializes a new Gradle build. [incubating]

== Help tasks
dependencies - Displays all dependencies declared in root project "gs-gradle".
dependencyInsight - Displays the insight into a specific dependency in root project "gs-gradle".
help - Displays a help message
projects - Displays the sub-projects of root project "gs-gradle".
properties - Displays the properties of root project "gs-gradle".
tasks - Displays the tasks runnable from root project "gs-gradle".

To see all tasks and more detail, run with --all.

BUILD SUCCESSFUL

Total time: 3.077 secs

即使這些任務(wù)可用,但如果沒有項(xiàng)目構(gòu)建配置,它們也不會(huì)提供太多價(jià)值。當(dāng)你充實(shí)build.gradle文件時(shí),一些任務(wù)會(huì)更有用。在添加build.gradle插件時(shí),任務(wù)列表會(huì)增加,因此您偶爾會(huì)想要再次運(yùn)行任務(wù)以查看可用的任務(wù)。

說到添加插件,接下來添加一個(gè)啟用基本Java構(gòu)建功能的插件。

構(gòu)建Java代碼

從簡(jiǎn)單的build.gradle開始,在本指南開頭創(chuàng)建的中創(chuàng)建一個(gè)非常基本的文件。只給它一行

apply plugin: "java"

構(gòu)建配置中的這一行帶來了大量功率。再次運(yùn)行gradle tasks,您會(huì)看到添加到列表中的新任務(wù),包括構(gòu)建項(xiàng)目,創(chuàng)建JavaDoc和運(yùn)行測(cè)試的任務(wù)。

您將經(jīng)常使用gradle build。此任務(wù)將代碼編譯,測(cè)試并組裝到JAR文件中。你可以像這樣運(yùn)行它:

gradle build

幾秒鐘后,“BUILD SUCCESSFUL”表示構(gòu)建已完成。

要查看構(gòu)建工作的結(jié)果,請(qǐng)查看構(gòu)建文件夾。在那里你會(huì)找到幾個(gè)目錄,包括這三個(gè)值得注意的文件夾:

classes:該項(xiàng)目已編譯的.class文件。

reports:構(gòu)建生成的報(bào)告(例如測(cè)試報(bào)告)。

libs:匯編的項(xiàng)目庫(kù)(通常是JAR和/或WAR文件)。

classes文件夾具有通過編譯Java代碼生成的.class文件。具體來說,您應(yīng)該找到HelloWorld.class和Greeter.class。

此時(shí),項(xiàng)目沒有任何庫(kù)依賴項(xiàng),因此dependency_cache文件夾中沒有任何內(nèi)容。

reports文件夾應(yīng)包含項(xiàng)目運(yùn)行單元測(cè)試的報(bào)告。由于該項(xiàng)目尚未進(jìn)行任何單元測(cè)試,因此該報(bào)告無效。

libs文件夾應(yīng)包含以項(xiàng)目文件夾命名的JAR文件。再往下,您將看到如何指定JAR的名稱及其版本。

聲明依賴項(xiàng)

簡(jiǎn)單的Hello World示例是完全獨(dú)立的,不依賴于任何其他庫(kù)。但是,大多數(shù)應(yīng)用程序依賴于外部庫(kù)來處理常見或復(fù)雜的功能。

例如,假設(shè)除了說“Hello World!”之外,您還希望應(yīng)用程序打印當(dāng)前日期和時(shí)間。您可以使用本機(jī)Java庫(kù)中的日期和時(shí)間工具,但是通過使用Joda Time庫(kù)可以使事情變得更有趣。

首先,將HelloWorld.java更改為如下所示:

package hello;

import org.joda.time.LocalTime;

public class HelloWorld {
  public static void main(String[] args) {
    LocalTime currentTime = new LocalTime();
    System.out.println("The current local time is: " + currentTime);

    Greeter greeter = new Greeter();
    System.out.println(greeter.sayHello());
  }
}

這里HelloWorld使用Joda Time的LocalTime類來獲取和打印當(dāng)前時(shí)間。

如果您現(xiàn)在運(yùn)行gradle build來構(gòu)建項(xiàng)目,那么構(gòu)建將失敗,因?yàn)槟鷽]有在構(gòu)建中將Joda Time聲明為編譯依賴項(xiàng)。

對(duì)于初學(xué)者,您需要為第三方庫(kù)添加源。

repositories {
    mavenCentral()
}

repositories塊指示構(gòu)建應(yīng)從Maven Central存儲(chǔ)庫(kù)解析其依賴關(guān)系。Gradle嚴(yán)重依賴Maven構(gòu)建工具建立的許多約定和工具,包括使用Maven Central作為庫(kù)依賴關(guān)系源的選項(xiàng)。

現(xiàn)在我們已經(jīng)為第三方庫(kù)做好了準(zhǔn)備,讓我們宣布一些。

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile "joda-time:joda-time:2.2"
    testCompile "junit:junit:4.12"
}

使用dependencies塊,您可以為Joda Time聲明一個(gè)依賴項(xiàng)。具體來說,你在joda-time組中要求(從右到左閱讀)joda-time庫(kù)2.2版。

關(guān)于這種依賴關(guān)系的另一個(gè)注意事項(xiàng)是它是一個(gè)compile依賴項(xiàng),表明它應(yīng)該在編譯時(shí)可用(如果你正在構(gòu)建一個(gè)WAR文件,包含在WAR的/WEB-INF/libs文件夾中)。其他值得注意的依賴類型包括:

providedCompile。編譯項(xiàng)目代碼所需的依賴項(xiàng),但是運(yùn)行代碼的容器將在運(yùn)行時(shí)提供該依賴項(xiàng)(例如,Java Servlet API)。

testCompile。用于編譯和運(yùn)行測(cè)試的依賴項(xiàng),但不是構(gòu)建或運(yùn)行項(xiàng)目的運(yùn)行時(shí)代碼所必需的。

最后,讓我們指定JAR工件的名稱。

jar {
    baseName = "gs-gradle"
    version =  "0.1.0"
}

jar塊指定如何命名JAR文件。在這種情況下,它將呈現(xiàn)gs-gradle-0.1.0.jar。

現(xiàn)在,如果您運(yùn)行gradle build,Gradle應(yīng)該從Maven Central存儲(chǔ)庫(kù)解析Joda Time依賴項(xiàng),并且構(gòu)建將成功。

使用Gradle Wrapper構(gòu)建項(xiàng)目

Gradle Wrapper是啟動(dòng)Gradle構(gòu)建的首選方式。它由Windows的批處理腳本和OS X和Linux的shell腳本組成。這些腳本允許您運(yùn)行Gradle構(gòu)建,而無需在系統(tǒng)上安裝Gradle。這曾經(jīng)是添加到您的構(gòu)建文件中的東西,但它已被折疊到Gradle中,因此不再需要。相反,您只需使用以下命令。

$ gradle wrapper --gradle-version 2.13

完成此任務(wù)后,您會(huì)注意到一些新文件。這兩個(gè)腳本位于文件夾的根目錄中,而包裝jar和屬性文件已添加到新gradle/wrapper文件夾中。

└── 
    └── gradlew
    └── gradlew.bat
    └── gradle
        └── wrapper
            └── gradle-wrapper.jar
            └── gradle-wrapper.properties

Gradle Wrapper現(xiàn)在可用于構(gòu)建項(xiàng)目。將它添加到您的版本控制系統(tǒng),克隆項(xiàng)目的每個(gè)人都可以構(gòu)建它。它可以與安裝的Gradle版本完全相同的方式使用。運(yùn)行包裝器腳本來執(zhí)行構(gòu)建任務(wù),就像之前一樣:

./gradlew build

第一次運(yùn)行指定版本的Gradle的包裝器時(shí),它會(huì)下載并緩存該版本的Gradle二進(jìn)制文件。Gradle Wrapper文件旨在提交源代碼控制,以便任何人都可以構(gòu)建項(xiàng)目,而無需先安裝和配置特定版本的Gradle。

在此階段,您將構(gòu)建代碼。你可以在這里看到結(jié)果:

build
├── classes
│   └── main
│       └── hello
│           ├── Greeter.class
│           └── HelloWorld.class
├── dependency-cache
├── libs
│   └── gs-gradle-0.1.0.jar
└── tmp
    └── jar
        └── MANIFEST.MF

包括的是兩個(gè)預(yù)期類文件GreeterHelloWorld,以及JAR文件。快速瀏覽一下:

$ jar tvf build/libs/gs-gradle-0.1.0.jar
  0 Fri May 30 16:02:32 CDT 2014 META-INF/
 25 Fri May 30 16:02:32 CDT 2014 META-INF/MANIFEST.MF
  0 Fri May 30 16:02:32 CDT 2014 hello/
369 Fri May 30 16:02:32 CDT 2014 hello/Greeter.class
988 Fri May 30 16:02:32 CDT 2014 hello/HelloWorld.class

類文件被捆綁在一起。值得注意的是,即使您將joda-time聲明為依賴項(xiàng),此處也不包含該庫(kù)。并且JAR文件也不可運(yùn)行。

為了使這段代碼可以運(yùn)行,我們可以使用gradle的application插件。將其添加到您的build.gradle文件中。

apply plugin: "application"

mainClassName = "hello.HelloWorld"

然后你可以運(yùn)行該應(yīng)用程序!

$ ./gradlew run
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:run
The current local time is: 16:16:20.544
Hello world!

BUILD SUCCESSFUL

Total time: 3.798 secs

捆綁依賴關(guān)系需要更多思考。例如,如果我們構(gòu)建一個(gè)WAR文件,一種通常與第三方依賴關(guān)系打包相關(guān)的格式,我們可以使用gradle的WAR插件。如果您使用的是Spring Boot并且想要一個(gè)可運(yùn)行的JAR文件,那么spring-boot-gradle-plugin非常方便。在這個(gè)階段,gradle對(duì)您的系統(tǒng)不了解,無法做出選擇。但就目前而言,這應(yīng)該足以開始使用gradle了。

要完成本指南的內(nèi)容,這里是完整的build.gradle文件:

apply plugin: "java"
apply plugin: "eclipse"
apply plugin: "application"

mainClassName = "hello.HelloWorld"

// tag::repositories[]
repositories {
    mavenCentral()
}
// end::repositories[]

// tag::jar[]
jar {
    baseName = "gs-gradle"
    version =  "0.1.0"
}
// end::jar[]

// tag::dependencies[]
sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile "joda-time:joda-time:2.2"
    testCompile "junit:junit:4.12"
}
// end::dependencies[]

// tag::wrapper[]
// end::wrapper[]

此處嵌入了許多開始/結(jié)束注釋。這使得可以將構(gòu)建文件的位提取到本指南中,以獲得上述詳細(xì)說明。您在生產(chǎn)構(gòu)建文件中不需要它們。

概要

恭喜!您現(xiàn)在已經(jīng)創(chuàng)建了一個(gè)簡(jiǎn)單而有效的Gradle構(gòu)建文件,用于構(gòu)建Java項(xiàng)目。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/73181.html

相關(guān)文章

  • 慕課網(wǎng)_《新一代構(gòu)建工具gradle》學(xué)習(xí)總結(jié)

    摘要:時(shí)間年月日星期二說明本文部分內(nèi)容均來自慕課網(wǎng)。項(xiàng)目一個(gè)項(xiàng)目代表一個(gè)正在構(gòu)建的組件比如一個(gè)文件,當(dāng)構(gòu)建啟動(dòng)后,會(huì)基于實(shí)例化一個(gè)類,并且能夠通過變量使其隱式可用。任務(wù)動(dòng)作定義了一個(gè)最小的工作單元。 時(shí)間:2017年05月16日星期二說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示例源碼:無個(gè)人學(xué)習(xí)源碼:https://github.com/zccod...

    antyiwei 評(píng)論0 收藏0
  • gradle-學(xué)習(xí)筆記(2)-多項(xiàng)目構(gòu)建

    摘要:記得在中支持多個(gè)子項(xiàng)目的構(gòu)建方法同樣的在中也會(huì)支持多項(xiàng)目的構(gòu)建方法還記得在中如何配置多項(xiàng)目工程嗎這里回憶一下首先我們需要一個(gè)父元素文件比如這樣而在中我們并不需要指定父元素的標(biāo)簽我們只需要編寫好對(duì)應(yīng)的文件夾名稱,并且將文件夾名稱和對(duì) 記得在maven中支持多個(gè)子項(xiàng)目的構(gòu)建方法,同樣的在gradle 中也會(huì)支持多項(xiàng)目的構(gòu)建方法 還記得在maven中如何配置多項(xiàng)目工程嗎, 這里回憶一下 首先...

    happen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<