1. 程式人生 > >如何使用Intellij和Gradle開發JAVA Web專案

如何使用Intellij和Gradle開發JAVA Web專案

以前總結的一句話:學C/C++學不明白了,去學彙編;使用編譯器用不明白的時候,去用命令列操作。

忘掉IDE,或者僅僅把IDE當做編輯器來使用。

環境:Gradle 3.4.1 + Intellij 2017.1

1、根據gradle的專案結構約定,在命令列中建立目錄和gradle指令碼檔案。

mkdir src\main\java

mkdir src\main\resources

mkdir src\test\java

mkdir src\test\resources

build.gradle

group 'com.xiya'
version '1.0-SNAPSHOT'

apply plugin: 'idea'
apply plugin: 'war'

sourceCompatibility = 1.8

repositories {
    maven {
        url 'http://maven.aliyun.com/nexus/content/groups/public/'
    }
}

buildscript {
    repositories {
        maven {
            url 'http://maven.aliyun.com/nexus/content/groups/public/'
        }
    }
    dependencies {
        classpath "gradle.plugin.org.akhikhl.gretty:gretty:1.4.2"
    }
}

apply plugin: "org.akhikhl.gretty"

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile group: 'org.springframework', name: 'spring-context', version: '4.3.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-webmvc', version: '4.3.7.RELEASE'
    compile group: 'commons-logging', name: 'commons-logging', version: '1.2'
    providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
}

task wrapper(type: Wrapper) {
    gradleVersion = '3.0'
}

tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

2、執行一個命令"gradle idea",生成idea專案結構


3、在IntelliJ IDEA中,直接開啟該ipr檔案。

配置Gradle


如上圖所示,Gradle配置結束。

實際上如上圖配置完Gradle,也會生成相應的目錄結構。所以也是沒有必要在命令列執行mkdir操作了。

4、生成web.xml檔案

Project Structure-->Facets-->Web-->Deployment Descriptors


src\main\webapp\WEB-INF\web.xml

5、現在就可以編輯程式碼了。

為了測試,我們簡單寫個Hello World程式。

src\main\webapp\WEB-INF\web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <servlet>
        <servlet-name>Spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>
src\main\resources\springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package="com.xiya.controllers"/>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>
src\main\java\com\xiya\controllers\HelloWorld.java
package com.xiya.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * Created by N3verL4nd on 2017/4/1.
 */
@Controller
public class HelloWorld {
    @RequestMapping("/hello")
    public String sayHello() {
        System.out.println("Hello World");
        return "success";
    }
}
src\main\webapp\WEB-INF\views\success.jsp
<%--
  Created by IntelliJ IDEA.
  User: N3verL4nd
  Date: 2017/4/1
  Time: 16:26
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>success</title>
</head>
<body>
    <h1>Welcome</h1>
</body>
</html>

6、編譯專案,別在IDE裡面進行,使用gradle來構建

D:\N3verL4nd\Desktop\test>gradle build
:compileJava
:processResources
:classes
:war
:assemble
:compileTestJava NO-SOURCE
:processTestResources NO-SOURCE
:testClasses UP-TO-DATE
:test NO-SOURCE
:check UP-TO-DATE
:build

BUILD SUCCESSFUL

Total time: 1.772 secs
D:\N3verL4nd\Desktop\test>

7、使用gradle appRun執行專案(我們使用了gretty外掛)



顯示結果:



需要釋出專案時,我們可以使用gradle wrapper命令生成wrapper。