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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

用gradle启动java项目_构建Java项目

發(fā)布時(shí)間:2023/12/4 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用gradle启动java项目_构建Java项目 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

#構(gòu)建Java項(xiàng)目#

上一節(jié)我們簡(jiǎn)要介紹了如何編寫(xiě)一個(gè)單機(jī)的To Do應(yīng)用,接下來(lái)要打包部署成可執(zhí)行的應(yīng)用,我們需要編譯源代碼,生成的class文件需要打包到JAR文件中。JDK提供了javac 和jar工具幫助你實(shí)現(xiàn)這些任務(wù),但是你也不想每次源代碼發(fā)生變化時(shí)你都手動(dòng)去執(zhí)行這些任務(wù)吧。

Gradle插件能夠自動(dòng)化完成這些任務(wù),插件引入了一些領(lǐng)域特有的觀念,其中一個(gè)Gradle插件就是java插件,Java插件不僅僅只有編譯和打包的功能,它給你的項(xiàng)目安排了一個(gè)標(biāo)準(zhǔn)布局,并確保你所有的任務(wù)都是按序執(zhí)行,現(xiàn)在該應(yīng)用java插件來(lái)構(gòu)建你的build腳本了。

##使用java插件##

每個(gè)Gradle項(xiàng)目都會(huì)創(chuàng)建一個(gè)build.gradle文件,如果你想使用java插件只需要添加下面這行代碼:

apply plugin: 'java'

這一行代碼足以構(gòu)建你的項(xiàng)目,但是Gradle怎么知道你的源代碼放在哪個(gè)位置呢?java插件的一個(gè)約定就是源代碼的位置,默認(rèn)情況下插件搜索src/main/java路徑下的文件,你的包名com.manning.gia.todo會(huì)轉(zhuǎn)換成源代碼根目錄下的子目錄,創(chuàng)建build腳本之后你的項(xiàng)目結(jié)構(gòu)應(yīng)該是這樣的:

##構(gòu)建項(xiàng)目##

現(xiàn)在你可以構(gòu)建你的項(xiàng)目了,java插件添加了一個(gè)build任務(wù)到你項(xiàng)目中,build任務(wù)編譯你的代碼、運(yùn)行測(cè)試然后打包成jar文件,所有都是按序執(zhí)行的。運(yùn)行g(shù)radle build之后你的輸出應(yīng)該是類(lèi)似這樣的:

$ gradle build

:compileJava

:processResources UP-TO-DATE

:classes

:jar

:assemble

:compileTestJava UP-TO-DATE

:processTestResources UP-TO-DATE

:testClasses UP-TO-DATE

:test

:check

:build

輸出的每一行都表示一個(gè)可執(zhí)行的任務(wù),你可能注意到有一些任務(wù)標(biāo)記為 UP-TO-DATE,這意味著這些任務(wù)被跳過(guò)了,gradle能夠自動(dòng)檢查哪些部分沒(méi)有發(fā)生改變,就把這部分標(biāo)記下來(lái),省的重復(fù)執(zhí)行。在大型的企業(yè)項(xiàng)目中可以節(jié)省不少時(shí)間。執(zhí)行完gradle build之后項(xiàng)目結(jié)構(gòu)應(yīng)該是類(lèi)似這樣的:

在項(xiàng)目的根目錄你可以找到一個(gè)build目錄,這里包含了所有的輸出,包含class文件,測(cè)試報(bào)告,打包的jar文件,以及一些用來(lái)歸檔的臨時(shí)文件。如果你之前使用過(guò)maven,它的標(biāo)準(zhǔn)輸出是target,這兩個(gè)結(jié)構(gòu)應(yīng)該很類(lèi)似。jar文件目錄build/libs下可以直接運(yùn)行,jar文件的名稱直接由項(xiàng)目名稱得來(lái)的,這里是todo-app。

##運(yùn)行項(xiàng)目##

你只需要使用JDK的java命令就可以執(zhí)行這個(gè)應(yīng)用了:

$ java -cp build/classes/main com.manning.gia.todo.ToDoApp

--- To Do Application ---

Please make a choice:

(a)ll items

(f)ind a specific item

(i)nsert a new item

(u)pdate an existing item

(d)elete an existing item

(e)xit

>

接下來(lái)我們會(huì)學(xué)習(xí)如何自定義項(xiàng)目結(jié)構(gòu)。

##自定義你的項(xiàng)目##

Java插件是一個(gè)非常固執(zhí)的框架,對(duì)于項(xiàng)目很多的方面它都假定有默認(rèn)值,比如項(xiàng)目布局,如果你看待世界的方法是不一樣的,Gradle給你提供了一個(gè)自定義約定的選項(xiàng)。想知道哪些東西是可以配置的?可以參考這個(gè)手冊(cè):http://www.gradle.org/docs/current/dsl/,之前提到過(guò),運(yùn)行命令行g(shù)radle properties可以列出可配置的標(biāo)準(zhǔn)和插件屬性以及他們的默認(rèn)值。

修改你的項(xiàng)目和插件屬性

接下來(lái)你將學(xué)習(xí)如何指定項(xiàng)目的版本號(hào)、Java源代碼的兼容級(jí)別,前面你用的java命令來(lái)運(yùn)行應(yīng)用程序,你需要通過(guò)命令行選項(xiàng)-cp build/classes/main指定class文件的位置給Java運(yùn)行時(shí)。但是要從JAR文件中啟動(dòng)應(yīng)用,你需要在manifest文件MANIFEST.MF中包含首部Main-Class。看下面的腳本你就明白怎么操作了:

//Identifies project’sversion through a number scheme

version = 0.1

//Sets Java version compilation compatibility to 1.6

sourceCompatibility = 1.6

//Adds Main-Class header to JAR file’s manifest

jar {

manifest {

attributes 'Main-Class': 'com.manning.gia.todo.ToDoApp'

}

}

打包成JAR之后,你會(huì)發(fā)現(xiàn)JAR文件的名稱變成了todo-app-0.1.jar,這個(gè)jar包含了main-class首部,你就可以通過(guò)命令java -jar build/libs/todo-app-0.1.jar運(yùn)行了。

接下來(lái)學(xué)習(xí)如何改變項(xiàng)目的默認(rèn)布局:

//Replaces conventional source code directory with list of different directories

sourceSets {

main {

java {

srcDirs = ['src']

}

}

//Replaces conventional test source code directory with list of different directories

test {

java {

srcDirs = ['test']

}

}

}

//Changes project output property to directory out

buildDir = 'out'

配置和使用外部依賴

在Java世界里,依賴是分布的以JAR文件的形式存在,許多庫(kù)都從倉(cāng)庫(kù)里獲得,比如一個(gè)文件系統(tǒng)或中央服務(wù)器。Gradle需要你指定至少一個(gè)倉(cāng)庫(kù)作為依賴下載的地方,比如mavenCentral: //Shortcut notation for configuring Maven Central 2 repository accessible under http://repo1.maven.org/maven2

repositories {

mavenCentral()

}

定義依賴

接下來(lái)就是定義依賴,依賴通過(guò)group標(biāo)識(shí),name和version來(lái)確定,比如下面這個(gè):

dependencies {

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

}

Gradle是通過(guò)配置來(lái)給依賴分組,Java插件引入的一個(gè)配置是compile,你可以很容易區(qū)分這個(gè)配置定義的依賴是用來(lái)編譯源代碼的。

解析依賴

Gradle能夠自動(dòng)檢測(cè)并下載項(xiàng)目定義的依賴:

$ gradle build

:compileJava

Download http://repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.pom

Download http://repo1.maven.org/maven2/org/apache/commons/commons-parent/22/commons-parent-22.pom

Download http://repo1.maven.org/maven2/org/apache/apache/9/apache-9.pom

Download http://repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar

:processResources UP-TO-DATE

...

:build

總結(jié)

以上是生活随笔為你收集整理的用gradle启动java项目_构建Java项目的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。