7
9

More than 5 years have passed since last update.

Gradleをもっと使いたい(ビルドをGradleに移行)

Last updated at Posted at 2016-03-21

前記事で、LinuxにGradleを導入してJavaプロジェクトをビルドしました。今回は、既存のTomcat(JavaEE)のプロジェクトにGradleを適用したいと存じます。

既存ビルドがやっていること

・コンパイル→Warファイルを作成して終了(環境へのデプロイは手動)
・環境ごとに設定ファイルに差異があるため、Mavenビルド時に差し替える

いずれは、リリースまで全て自動化したいとは思いますが
まずは現状のビルドをGradleに変えるところまで実施します。

プロジェクト構成

現状の構成は以下のような形です
ファイル階層

gradle_war
|ーenv
||ーtest
|||ーapp.properties
||ーproduction
|||-app.properties
|ーsrc

WEB-INF/app.propertiesに設定内容を記載していて、環境ごとに差異があり、それぞれの環境向け設定ファイルは「env」以下の環境名ディレクトリに入っています。今回は、このプロジェクトにGradleを導入して、環境依存をファイル置き換えで解決するような、ビルドスクリプトを作成します。

Gradleの導入

インストール手順は、以前に書いたものを参照してください。
プロジェクト直下に、build.gradle(ビルドスクリプト)を作成する。

ファイル階層(ビルドスクリプト追加)

gradle_war
|ーbuild.gradle←追加
|ーenv
||ーtest
|||ーapp.properties
||ーproduction
|||-app.properties
|ーsrc

スクリプト内容は以下のようにしました
ビルドスクリプト

test_gradle/buld.gradle
buildscript {
 //ビルドスクリプト中に必要なモジュールを、参照する先を指定する
 repositories {
  jcenter()
 }

  //ビルド時に必要なもの(依存関係)
 dependencies {
  classpath 'com.bmuschko:gradle-tomcat-plugin:2.0'
 }
}

apply plugin: 'war'
apply plugin: 'com.bmuschko.tomcat'
repositories {
 mavenCentral()
}

//APサーバは、Tomcatで動かすため、コンパイルでも同環境を指定する
dependencies {
 providedCompile 'javax:javaee-web-api:6.0'
 compile 'org.slf4j:slf4j-api:1.7.18'
 testCompile 'junit:junit:4.11'

 def tomcatVersion = '8.0.32'
 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'
 }
}

//warファイル作成時のみ、環境依存ファイルを差し替える処理
war {
 webInf{
  from("env/${env}/app.properties")
 }
}

ビルドコマンド

#プロジェクト直下に移動して
$ gradle -Penv=test(-Penv=production) build

ビルドコマンド時に、envという変数にtest/productionという文字列を渡しておき、warファイル作成時に、環境名のディレクトリから環境依存ファイルを取得して、WEB-INFディレクトリ以下にコピーするという動きとなります。Mavenで実施していることをそのまま書き写しただけですが、当初の目的である、MavenのビルドをGradleに置き換えました。

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9