プログラマーの調べ物

プログラマーが調べ物をするときに役に立つサイトを作ります。

GradleでTomcatプロジェクトを実行する

gradle init --type java-library

で雛形を作ります。

次に、build.gradleを以下のように書きます。

/*
 * This build file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java project to get you started.
 * For more details take a look at the Java Quickstart chapter in the Gradle
 * user guide available at https://docs.gradle.org/3.3/userguide/tutorial_java_projects.html
 */

buildscript {
  repositories {
    jcenter()
  }
  dependencies {
    classpath 'com.bmuschko:gradle-tomcat-plugin:2.0'
  }
}


apply plugin: 'war'
apply plugin: 'com.bmuschko.tomcat'

repositories {
  mavenCentral()
}

dependencies {
  providedCompile 'javax:javaee-web-api:6.0'
  compile 'org.slf4j:slf4j-api:1.7.5'
  testCompile 'junit:junit:4.11'

  def tomcatVersion = '7.0.52'
  tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
         "org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}"
  tomcat("org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}") {
        exclude group: 'org.eclipse.jdt.core.compiler', module: 'ecj'
  }
}

src/main/java/exampleというディレクトリを作り、サーブレットを作成します。

HelloServet.javaです。

package exapmle;

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

@WebServlet(name="HelloServlet", urlPatterns={"/hello"})
public class HelloServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse res)
        throws ServletException, IOException {
            res.getWriter().print("Hello!");
    }
}

src/main/webapp/というディレクトリを作成し、webapp以下にindex.htmlを作成します。

index.htmlです。

<h1>Hello, tomcat plugin.</h1>

ここまでやったら、

gradle tomcatRunWar

を実行します。 省略形はgradle tRWでOKです。

ビルドを実行すると、

  • Tomcatのライブラリなど依存ライブラリのダウンロード
  • Webアプリケーションのビルドとパッケージング(WARファイルの作成)
  • 組み込みTomcatの起動
  • Webアプリケーション(WARファイル)を組み込みTomcatへデプロイ

という一連の手順がGradleによって自動的に行われます。