使用IntelliJ IDEA,gradle開發Java web應用步驟
使用IntelliJ IDEA,gradle開發Java web應用步驟
最近 正在學習gradle構建工具的使用,看了一堆的文檔,有點一知半解,索性動作實踐一把,在以后的自己的項目中嘗試使用看看。目前手頭用的是 IntelliJ IDEA 14,搭建了一天終于明白怎么集成gradle賴開發Java web,就在這里記下來以后備用。
準備工作
- 本機安裝好gradle
- 安裝好java環境和IDEA 14
- 準備好tomcat
- 使用Jfinal jar包,后續做一個簡單的Demo
工程創建步驟
-
打開IDEA,選擇“New Project”->“Gradle”,勾選圖中的幾個選項,在“gradle home”中填上本機gradle的安裝目錄,點擊“next”。
-
填寫工程名。點“finish”。
-
生成項目后目錄結構如下,其中lib是手動建立的目錄,用來放一些從本地導入的依賴包,后面Jfinal的jar包就在這里。其他目錄都是IDEA根據gradle規范生成的。
-
創建webapp目錄,就是java的web目錄(Eclipse中的WebRoot),存放jsp文件和WEF-INF等文件的地方。根據gradle目錄規范。編輯build.gradle文件,在開頭添加一個apply plugin: 'war',在IDEA的gradle工具欄中運行"build"命令,就會生成在src/main下生成一個webapp文件夾,并且在項目的Modules中生成一個Web項目。
-
創建web.xml文件。點擊"File”->“Project Structrue”。在對話框中選擇"Modules”,選擇右邊的項目下上一步生成的Web項目,點"Deployment Descriptor"中的綠色加號,在/src/main/webapp下添加一個web.xml文件。
-
這時一個java web項目的結構就已經搭建好了,看到項目菜單里的webapp文件夾已經有個小地球的標志。現在就可以按照在IDEA下java web開發的的操作開發web項目了。
-
按照Jfinal的幫助文檔,把jar包導入,把web.xml配置好,寫好Demo類,然后用gradle build,一個web demo就編譯好了,后續只要啟動web容器,部署應用即可。
-
gradle用jetty插件運行web項目更方便,我不是很熟悉jetty,這里我還是用IDEA啟動tomcat做測試。配置好 tomcat,將gradle生成的artifacts(gradle構建時自動為項目天剛加了2個artifacts,一個是項目的war包,一個是沒 打包的exploded,推薦用exploded)添加到tomcat的deployment中。
-
點擊工具欄上的"run”,啟動tomcat,容器啟動后部署應用,沒問題就可以正常訪問站點了。
-
最后項目的目錄結構:
-
幾個文件的代碼:
build.gradle
apply plugin: 'java'
//IntelliJ IDEA 插件
apply plugin: 'idea'
//war包插件
apply plugin: 'war'
sourceCompatibility = 1.6
version = '1.0'
repositories {
// 使用開源中國的maven倉庫
maven { url 'http://maven.oschina.net/content/groups/public/' }
}
dependencies {
//導入本地的依賴包
compile fileTree(dir: 'libs', include: ['*.jar'])
//從maven倉庫導入依賴
compile ('org.apache.httpcomponents:httpclient:4.4')
compile ('org.apache.commons:commons-lang3:3.3.2')
} web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<init-param>
<param-name>configClass</param-name>
<param-value>com.jfinal.demo.Config</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app> DemoConfig.java
package com.jfinal.demo;
import com.jfinal.core.Controller;
public class DemoController extends Controller{
public void hello(){
renderText("hello world");
}
} DemoController.java
package com.jfinal.demo;
import com.jfinal.config.*;
import com.jfinal.render.ViewType;
public class DemoConfig extends JFinalConfig {
public void configConstant(Constants me) {
me.setDevMode(true);
me.setViewType(ViewType. JSP);
}
public void configRoute(Routes me) {
me.add("/", DemoController. class);
}
public void configPlugin(Plugins me) {
}
public void configInterceptor(Interceptors me) {
}
public void configHandler(Handlers me) {
}
} To Be Continue
gradle作為一個新興的構建工具,有很多好玩的地方,解決完工程搭建后,要好好研究研究才行:)
來自:http://my.oschina.net/u/1010578/blog/390094