04 Gradle 入門(mén)-Gradle 普通項(xiàng)目搭建

文章來(lái)源

到這里,相信大家都已經(jīng)知道 Gradle 就是一個(gè)構(gòu)建工具,其主要的目的就是幫咱們構(gòu)建項(xiàng)目,以下我就通過(guò)一個(gè)普通的 Java 項(xiàng)目和普通的 web 項(xiàng)目的構(gòu)建帶你走入 Gradle 項(xiàng)目構(gòu)建.

1 Gradle 搭建Java項(xiàng)目

使用構(gòu)建工具搭建 Java 項(xiàng)目的主要目的就是其自動(dòng)的打包和依賴功能.以下就來(lái)看下如何使用 Gradle 搭建 Java 項(xiàng)目

1.1 項(xiàng)目創(chuàng)建

IDEA 自帶 Gradle 和 Groovy 插件,所以可以直接創(chuàng)建 Gradle 項(xiàng)目.如果是 eclipse 需要安裝對(duì)應(yīng)的插件.

IDEA 創(chuàng)建 Gradle Java 項(xiàng)目

  1. file -> new project -> Gradle -> 勾選 Java
  2. 輸入: GroupId,ArtifactId,Version
  3. Use local graedle distribution 選擇Gradle home
  4. 在 src/main/java下創(chuàng)建包 cn.wolfcode和創(chuàng)建 App.java 類(lèi)
  5. 在 App 中打印 hello gradle,測(cè)試
Java 項(xiàng)目搭建.gif

以上操作咱們就已經(jīng)使用 Gradle 搭建好了 Java 項(xiàng)目,項(xiàng)目中自動(dòng)生成了目錄和 build.gradle,settings.gradle,接下來(lái)咱們就來(lái)看下build.gradle

1.2 build.gradle 和項(xiàng)目目錄

// plugins 方法,傳入閉包{} 作為參數(shù)
plugins {
    id 'java'
}
group 'cn.wolfcode.gradle'    // group 方法
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8    // 變量
// repositories  方法,傳入閉包
repositories {
    mavenCentral()
}
// dependencies 方法,傳入閉包
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

創(chuàng)建完項(xiàng)目之后會(huì)自動(dòng)生成 build.gralde , 里面配置了構(gòu)建項(xiàng)目的基本腳本.
此腳本用的就是 Groovy 語(yǔ)言書(shū)寫(xiě)的,從腳本上看可得知,除了sourceCompatibility 是變量,其他的都是方法調(diào)用.
plugins,repositories ,dependencies 傳入的是閉包.至于每一項(xiàng)配置是什么意思,期待后面的構(gòu)建腳本介紹.

從創(chuàng)建出來(lái)的項(xiàng)目上咱們可以看到自動(dòng)生成了一些目錄,這些目錄結(jié)構(gòu)跟 Maven 構(gòu)建是相同的.結(jié)構(gòu)如下:


image.png

構(gòu)建工具構(gòu)建的Java項(xiàng)目主要目的是可以打包.接下來(lái)咱們就來(lái)看下如何使用 Gradle 給項(xiàng)目打包

1.3 Gradle 打包 Java 項(xiàng)目

操作非常簡(jiǎn)單,在 IDEA 右邊有一 Gradle ,展開(kāi)找到 Tasks 任務(wù),展開(kāi) Tasks下的 build 直接點(diǎn)擊 jar 就可以打包.

image.png

當(dāng)點(diǎn)擊了 jar 之后就會(huì)自動(dòng)打包到項(xiàng)目下的build/libs下,如圖


image.png

以上使用 Gradle 構(gòu)建普通的 Java 項(xiàng)目就已經(jīng)完成了,接下來(lái)咱們就來(lái)看下如何使用 Gradle 構(gòu)建普通的 web 項(xiàng)目

2 Gradle 構(gòu)建 web 項(xiàng)目

使用 Gradle 構(gòu)建 web 項(xiàng)目和 構(gòu)建 Java 項(xiàng)目類(lèi)似,只在第一步位置勾選 web 即可.

2.1 創(chuàng)建 web 項(xiàng)目

  1. file -> new project -> Gradle -> 勾選 Web
  2. 輸入: GroupId,ArtifactId,Version
  3. Use local graedle distribution 選擇Gradle home

具體操作如下

web項(xiàng)目搭建.gif

以上操作咱們就已經(jīng)使用 Gradle 搭建好了 Java 項(xiàng)目,項(xiàng)目中自動(dòng)生成了目錄和 build.gradle,settings.gradle,接下來(lái)咱們就來(lái)看下build.gradle

2.2 build.gradle 和項(xiàng)目目錄

plugins {
    id 'java'
    id 'war'   //比普通的 java 項(xiàng)目多出了一個(gè) war 插件的引入
}

group 'cn.wolfcode.gradle'  
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

以上咱們可以看出,web項(xiàng)目只是在build.gradle 中多引入了war 插件而已.
目錄由工具自動(dòng)生成,如果是手動(dòng)將 Java 項(xiàng)目改為 web 項(xiàng)目需要自己手動(dòng)創(chuàng)建目錄或者自己書(shū)寫(xiě)生成目錄的插件.自動(dòng)生成目錄如下.


image.png

以上使用 Gradle 項(xiàng)目咱們就已經(jīng)構(gòu)建好了一個(gè)簡(jiǎn)單的 web 項(xiàng)目.而作為一個(gè)強(qiáng)大的構(gòu)建工具,不僅僅是約束了項(xiàng)目結(jié)構(gòu)那么簡(jiǎn)單,其實(shí)還可以打成 war 包和引入插件,這里作為一個(gè)簡(jiǎn)單的 web 項(xiàng)目,咱們就先來(lái)打個(gè) war 包吧.

2.2 web 項(xiàng)目打包為 war 包

操作非常簡(jiǎn)單,在 IDEA 右邊有一 Gradle ,展開(kāi)找到 Tasks 任務(wù),展開(kāi) Tasks下的 build 直接點(diǎn)擊 war 就可以打包.


image.png

當(dāng)點(diǎn)擊了 war 之后就會(huì)自動(dòng)打包到項(xiàng)目下的build/libs下,如圖


image.png

以上使用 Gradle 構(gòu)建普通的 web 項(xiàng)目就已經(jīng)完成了.

FS : 你這個(gè)騙子! 我的 IDEA 不會(huì)自動(dòng)生成目錄,還有錯(cuò)誤!!!
ME : 是你太快了垮卓,有時(shí)太快也是不好滴...
ME : 如果用的是 2016 版,在創(chuàng)建項(xiàng)目時(shí)勾選自動(dòng)創(chuàng)建目錄敢订,如下
口 Create directories fo empty content roots automatically

FS : 已經(jīng)創(chuàng)建了番宁,不想刪除再重新創(chuàng)建咋辦?
ME : 那就手動(dòng)創(chuàng)建目錄唄 G温!雕拼! (●>?<●)??

ME : 創(chuàng)建完了嗎扬霜? 完了告訴你,其實(shí)還可以自動(dòng)生成目錄. (●’?’●)??
ME : 是不是一下子把目錄都給記住了. 哈... 哈... 哈...

3 自定義目錄生成任務(wù)

def createDir(fileName){
    File f = new File(fileName);
    f.mkdirs()
}

task createJavaProjectDir << {
    def dirList = ['src/main/java','src/main/resources','src/test/java','src/test/resources']
    dirList.each {fileName ->
        createDir(fileName)
    }
}

task createWebProjectDir (dependsOn: createJavaProjectDir) << {
    def fileName = 'src/main/webapp'
    createDir(fileName)
}

刷新 Task 列表在other下直接雙擊 createWebProjectDir 即可生成目錄。當(dāng)然這些可能看不懂稿存,先不管笨篷,生成了再說(shuō),詳情請(qǐng)看任務(wù)篇瓣履。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末率翅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拂苹,更是在濱河造成了極大的恐慌,老刑警劉巖痰洒,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓢棒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡丘喻,警方通過(guò)查閱死者的電腦和手機(jī)脯宿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)泉粉,“玉大人连霉,你說(shuō)我怎么就攤上這事榴芳。” “怎么了跺撼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵窟感,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我歉井,道長(zhǎng)柿祈,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任哩至,我火速辦了婚禮躏嚎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘菩貌。我一直安慰自己卢佣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布箭阶。 她就那樣靜靜地躺著虚茶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尾膊。 梳的紋絲不亂的頭發(fā)上媳危,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音冈敛,去河邊找鬼待笑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛抓谴,可吹牛的內(nèi)容都是我干的暮蹂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼癌压,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼仰泻!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起滩届,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤集侯,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后帜消,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體棠枉,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年泡挺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辈讶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杀赢。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡哈雏,死狀恐怖寡壮,靈堂內(nèi)的尸體忽然破棺而出寡键,到底是詐尸還是另有隱情,我是刑警寧澤月幌,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布碍讯,位于F島的核電站,受9級(jí)特大地震影響飞醉,放射性物質(zhì)發(fā)生泄漏冲茸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一缅帘、第九天 我趴在偏房一處隱蔽的房頂上張望轴术。 院中可真熱鬧,春花似錦钦无、人聲如沸逗栽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)彼宠。三九已至,卻和暖如春弟塞,著一層夾襖步出監(jiān)牢的瞬間凭峡,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工决记, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留摧冀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓系宫,卻偏偏與公主長(zhǎng)得像索昂,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扩借,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項(xiàng)椒惨,請(qǐng)點(diǎn)擊這里進(jìn)行查閱:DSL參考 1.1新構(gòu)建系統(tǒng)...
    Chuckiefan閱讀 12,138評(píng)論 8 72
  • 本文作者:黃少存,叩丁狼高級(jí)講師潮罪。原創(chuàng)文章康谆,轉(zhuǎn)載請(qǐng)注明出處。 到這里,相信大家都已經(jīng)知道 Gradle 就是一個(gè)構(gòu)...
    叩丁狼教育閱讀 2,061評(píng)論 1 10
  • 到這里嫉到,相信大家都已經(jīng)知道 Gradle 就是一個(gè)構(gòu)建工具沃暗,其主要的目的就是幫咱們構(gòu)建項(xiàng)目,以下我就通過(guò)一個(gè)普通的...
    Java_Explorer閱讀 678評(píng)論 0 0
  • 在 Android Studio 構(gòu)建的項(xiàng)目中屯碴,基于 Gradle 進(jìn)行項(xiàng)目的構(gòu)建描睦,同時(shí)使用 Android DS...
    Ant_way閱讀 7,365評(píng)論 0 16
  • 這一章主要針對(duì)項(xiàng)目中可以用到的一些實(shí)用功能來(lái)介紹Android Gradle膊存,比如如何隱藏我們的證書(shū)文件导而,降低風(fēng)險(xiǎn)...
    acc8226閱讀 7,620評(píng)論 3 25