Gradle是一個基於groovy語言的構建工具,很多人都喜歡它,因爲它簡單,明瞭;沒像maven使用xml臃腫,其實在我看來構架工具使用xml,格式化更強。我是比較喜歡maven的,但是對gradle還是需要的,所以記錄一下使用方法。
下面是gradle的優點,一起來看一下吧。
- 按約定聲明構建和建設;
- 強大的支持多工程的構建;
- 強大的依賴管理(支持maven、Ivy等倉庫),提供最大的便利去構建工程;
- 全力支持已有的 Maven 或者Ivy倉庫基礎建設;
- 支持傳遞性依賴管理,在不需要遠程倉庫和pom.xml和ivy配置文件的前提下;
- 基於groovy腳本構建,其build腳本使用groovy語言編寫;
- 具有廣泛的領域模型支持構建;
- 深度 API;
- 易遷移;
- 自由和開放源碼,Gradle是一個開源項目,基於 ASL 許可。
以上說的都是廢話,我們一起來看一下gradle構建一個java web項目的過程吧!
1. 構建基於gradle的項目
這裏我們使用idea構建基於gradle的項目,這些地方我們就不必要累述了,按照工具的順序,一步一步的往下走就行啦。
2. 給項目添加web元素
我們構建成功項目以後,會發現src/main
下只有java
和resource
文件夾,有時候這兩個文件夾也沒有,如果沒有java
和resource
,請自行添加。
我們在src/main
下添加webapp
文件夾。並添加WEB-INF
文件夾,添加web.xml
文件。這些比較簡單,就不再說啦;如果不會添加的,請自行百度搜索一下怎麼添加。
如果你使用idea,則需要添加一下web.xml到項目,不然的話,web.xml中的servlet會報錯哦。點擊File >> project Structure …;選擇facets,選擇web項目,添加一下web.xml;如圖:
3.維護Build.gradle文件
首先我們的項目一般都要打成war包;這是我們就要引用gradle的一個插件:
apply plugin: 'java'
apply plugin: 'war'
我們創建項目的時候,使用的是maven的默認中央倉庫,如下:
repositories {
mavenCentral()
}
maven的這個中央倉庫在國外,我們下載jar包時會非常的慢,因此我們修改爲aliyun的maven倉庫:
repositories {
// 首先查找本地的倉庫
mavenLocal()
// 查找aliyun中央倉庫
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
接下來引入我們的依賴內容:
// 這裏我們可以放一些公共的屬性值
ext{
spring_version="4.3.21.RELEASE"
}
dependencies {
// spring依賴
compile group: 'org.springframework', name: 'spring-aop', version: ${spring_version}
compile "org.springframework:spring-aspects:${spring_version}"
compile (
"org.springframework:spring-beans:${spring_version}",
"org.springframework:spring-core:${spring_version}",
"org.springframework:spring-context:${spring_version}",
"org.springframework:spring-context-support:${spring_version}",
"org.springframework:spring-web:${spring_version}",
"org.springframework:spring-webmvc:${spring_version}",
// junit測試模塊
"junit:junit:4.12",
)
我們這樣基本已經完成項目的構建啦,但是還有一個問題,web項目的啓動方式,有一部分人會繼承外部的Tomcat來啓動項目,但是我們既然使用工具啦,而且gradle也有Tomcat這個插件,我就直接繼承Gradle的Tomcat吧!
/*
這種方式時比較老的方式,在2.0及其一下的版本繪製用這種方式
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "com.bmuschko:gradle-tomcat-plugin:2.2.3"
}
}
apply plugin: "com.bmuschko.tomcat"
*/
// 一句話解決所有依賴,2.1及其以上版本語法
plugins {
id 'java'
id 'war'
id 'com.bmuschko.tomcat' version '2.2.3'
}
// 設置tomcat的版本
dependencies {
def tomcatVersion = '8.0.27'
tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}"
}
// 設置不同啓動方訪問的路徑
tomcatRun.contextPath = '/simpleDemo'
tomcatRunWar.contextPath = '/simpleDemo'
這樣子tomcat就集成成功啦,有沒有很簡單,我們只需要執行tomcatRun
或者tomcatRunWar
命令項目就會使用gradle所集成的tomcat運行我們的web項目。
總結
然我們看一下我們項目的完整版
plugins {
id 'java'
id 'war'
id 'com.bmuschko.tomcat' version '2.2.3'
}
group 'com.simple'
version '1.0.0'
war.baseName = "simpleDemo"
project.webAppDirName = "src/main/webapp"
sourceCompatibility = 1.8
repositories {
// mavenCentral()
mavenLocal()
maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
}
ext{
spring_version="4.3.21.RELEASE"
junit_version="4.12"
}
dependencies {
// spring依賴
compile (
"org.springframework:spring-aop:${spring_version}",
"org.springframework:spring-aspects:${spring_version}",
"org.springframework:spring-beans:${spring_version}",
"org.springframework:spring-core:${spring_version}",
"org.springframework:spring-context:${spring_version}",
"org.springframework:spring-context-support:${spring_version}",
"org.springframework:spring-web:${spring_version}",
"org.springframework:spring-webmvc:${spring_version}",
"org.springframework:spring-orm:${spring_version}",
"junit:junit:${junit_version}",
)
def tomcatVersion = '8.0.27'
tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}",
"org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}"
}
tomcatRun.contextPath = '/simpleDemo'
tomcatRunWar.contextPath = '/simpleDemo'