GradleでWebアプリ実行

Gradleをさわってみる。

ドキュメント通りにディレクトリを作って http://gradle.monochromeroad.com/docs/userguide/java_plugin.html#N13140

コマンド一発で実行

gradle jettyRun

build.gradle

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'jetty'

repositories {
    mavenCentral()
}

dependencies {
    compile "org.mortbay.jetty:servlet-api:3.0.20100224"
    compile "org.mortbay.jetty:jsp-api-2.1:6.1.14"
    compile "jstl:jstl:1.2"
}

jettyRun {
    webAppSourceDirectory = new File("src/main/java")
    webXml = new File("src/webapp/WEB-INF/web.xml")
}

Servlet.java

package myapp;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Servlet extends HttpServlet {
    @Override
    public void service(HttpServletRequest req,
                      HttpServletResponse res) 
                      throws ServletException, IOException {
        res.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = res.getWriter();
        writer.print("<html><body>test</body></html>");
    }
}

web.xml

<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">

    <servlet>
        <servlet-name>webApplication</servlet-name>
        <servlet-class>myapp.Servlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>webApplication</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>