到這里,相信大家都已經(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)目
- file -> new project -> Gradle -> 勾選 Java
- 輸入: GroupId,ArtifactId,Version
- Use local graedle distribution 選擇Gradle home
- 在 src/main/java下創(chuàng)建包 cn.wolfcode和創(chuàng)建 App.java 類(lèi)
- 在 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)如下:
構(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 就可以打包.
當(dāng)點(diǎn)擊了 jar 之后就會(huì)自動(dòng)打包到項(xiàng)目下的build/libs下,如圖
以上使用 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)目
- file -> new project -> Gradle -> 勾選 Web
- 輸入: GroupId,ArtifactId,Version
- 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)生成目錄如下.
以上使用 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 就可以打包.
當(dāng)點(diǎn)擊了 war 之后就會(huì)自動(dòng)打包到項(xiàng)目下的build/libs下,如圖
以上使用 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ù)篇瓣履。