Gradle + eclipse + WTP

Gradle + eclipse + WTP の組み合わせでのプロジェクト作成をちょっと整理。

まずは、ターミナルからappという名前のプロジェクトを作成する。

% APP=app
% mkdir -p $APP/src/{main,test}/{java,resources,webapp}
% mkdir -p $APP/src/main/webapp/WEB-INF
% cd $APP
% echo "

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse-wtp'

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

eclipse {
  pathVariables 'GRADLE_USER_HOME': gradle.gradleUserHomeDir
}

eclipseWtpComponent.dependsOn cleanEclipseWtpComponent

sourceCompatibility = targetCompatibility = 1.6
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'

repositories {
  mavenCentral()
}

dependencies {
  compile group: 'javax.servlet', name: 'servlet-api', version: '2.5'
}
" > build.gradle
% gradle eclipse

build.gradleの

eclipse {
  pathVariables 'GRADLE_USER_HOME': gradle.gradleUserHomeDir
}

の部分は、eclipseの設定ファイル(.classpathとか)にgradleで落としたjarが、フルパスで入らないようにするための記述。バージョン管理にIDEの設定ファイルを突っ込む場合、個人環境のフルパスを含めたくないため。
以下のコマンドでeclipseの設定ファイル達が生成されます。

% gradle eclipse

で、次は eclipse 側から、クラスパス変数 GRADLE_USER_HOME を設定します。
[Window] - [Preferences] - [Java] - [Build Path] - [Classpath Variables] を選択し、[New]ボタンを押下。

Name: GRADLE_USER_HOME
Path: C:\Users\アカウント名\.gradle

と設定し、[OK]ボタンを押下。

[File] - [Import] - [Existing Projects into Workspace]
で生成したプロジェクトをインポートする。

依存jarが増えた場合は、build.gradleの修正後、再度 gradle eclipse を叩く。eclipse側にもgradleのプラグインがあるけど、使わないほうが無難なのかな。。mavenのm2eのように。

微妙だと思ったのが、依存jarを減らした場合。gradle eclipseを叩くと、.classpathから設定が消えるが、org.eclipse.wst.common.component からは消えない。直接ファイルから消すか、eclipes側から、[Project] - [Deployment Assembly]と進んで remove するのかなと。

(2013-06-19追記)
org.eclipse.wst.common.component から不要jarが消えてくれない件は、

eclipseWtpComponent.dependsOn cleanEclipseWtpComponent

として、最初にclean実行されるようにしとけば大丈夫でした。

以上