環境
- Mac OS/X 10.9
- Java 1.7.0_09
- Eclipse Kepler Build id: 20130614-0229
インストールするもの
- Gradle 1.8 (http://www.gradle.org/)
導入手順
ダウンロード/インストール
-
オフィシャル(http://www.gradle.org/)から, gradle-1.8-all.zipをダウンロード
-
取得したバイナリを解凍し、任意の場所において gradle/binにパスを通す
確認
# gradle -v
------------------------------------------------------------
Gradle 1.8
------------------------------------------------------------
Build time: 2013-09-24 07:32:33 UTC
Build number: none
Revision: 7970ec3503b4f5767ee1c1c69f8b4186c4763e3d
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.9.2 compiled on July 8 2013
Ivy: 2.2.0
JVM: 1.7.0_09 (Oracle Corporation 23.5-b02)
OS: Mac OS X 10.9 x86_64
eclipseプロジェクトを生成する
- ディレクトリ構成
maven的な構成ではない状況を想定。
# ll
total 8
drwxr-xr-x 3 ntakeda staff 102 10 27 14:19 testResources //テスト時に読み込むリソースファイルを配置
drwxr-xr-x 3 ntakeda staff 102 10 27 14:19 resources //実行時に読み込むリソースファイルを配置
drwxr-xr-x 3 ntakeda staff 102 10 27 14:33 src // Javaソース配置
drwxr-xr-x 3 ntakeda staff 102 10 27 15:11 test // テスト用Javaファイル配置
-rw-r--r-- 1 ntakeda staff 1070 10 27 15:12 build.gradle
// eclipse-wtpとの連携タスク用のプラグインをロード// eclipseプラグインはeclipse-wtpに内包されているapply plugin: 'eclipse-wtp'
// ソースファイルの読み込みディレクトリの定義sourceSets { main { java { srcDir 'src' } resources { srcDir 'resources' } } test { java { srcDir 'test' } resources { srcDir 'testResources' } }}
// srcDir: 'src' って記述は gradle 2.0で消える deprecatedな構文との警告メッセージが出た
// maven公開リポジトリを取り扱えるようにするrepositories { mavenCentral()}
// Java pluginの依存性定義dependencies { compile ( ['commons-io:commons-io:2.1'], ['commons-lang:commons-lang:2.6'], ) testCompile 'junit:junit:4.+'}
# gradle eclipse
:eclipseClasspath
:eclipseJdt
:eclipseProject
:eclipseWtp UP-TO-DATE
:eclipse
BUILD SUCCESSFUL
Total time: 16.092 secs
# less .classpath
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="output" path="bin"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="resources"/>
<classpathentry kind="src" path="testResources"/>
<classpathentry kind="src" path="test"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER" exported="true"/>
<classpathentry sourcepath="/Users/ntakeda/.gradle/caches/artifacts-26/filestore/commons-io/commons-io/2.1/source/46773a62217d7f630dfe6bae0bc645bbd92ffd09/commons-io-2.1-sources.jar" kind="lib" path="/Users/ntakeda/.gradle/caches/artifacts-26/filestore/commons-io/commons-io/2.1/jar/fd51f906669f49a4ffd06650666c3b8147a6106e/commons-io-2.1.jar" exported="true"/>
<classpathentry sourcepath="/Users/ntakeda/.gradle/caches/artifacts-26/filestore/commons-lang/commons-lang/2.6/source/67313d715fbf0ea4fd0bdb69217fb77f807a8ce5/commons-lang-2.6-sources.jar" kind="lib" path="/Users/ntakeda/.gradle/caches/artifacts-26/filestore/commons-lang/commons-lang/2.6/jar/ce1edb914c94ebc388f086c6827e8bdeec71ac2/commons-lang-2.6.jar" exported="true"/>
<classpathentry sourcepath="/Users/ntakeda/.gradle/caches/artifacts-26/filestore/junit/junit/4.11/source/28e0ad201304e4a4abf999ca0570b7cffc352c3c/junit-4.11-sources.jar" kind="lib" path="/Users/ntakeda/.gradle/caches/artifacts-26/filestore/junit/junit/4.11/jar/4e031bb61df09069aeb2bffb4019e7a5034a4ee0/junit-4.11.jar" exported="true"/>
<classpathentry sourcepath="/Users/ntakeda/.gradle/caches/artifacts-26/filestore/org.hamcrest/hamcrest-core/1.3/source/1dc37250fbc78e23a65a67fbbaf71d2e9cbc3c0b/hamcrest-core-1.3-sources.jar" kind="lib" path="/Users/ntakeda/.gradle/caches/artifacts-26/filestore/org.hamcrest/hamcrest-core/1.3/jar/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar" exported="true"/>
</classpath>
生成物は実行したローカルの環境にガッツリ依存する形になる。
ここは開発者ごとに生成することになるかな。
ビルド
gradle buildで色々やってくれる。詳細は http://gradle.monochromeroad.com/docs/userguide/tutorial_java_projects.html#N106C6
gradle build
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar UP-TO-DATE
:assemble UP-TO-DATE
:compileTestJava
:processTestResources
:testClasses
:test
:check
:build
ちなみに、jUnitが失敗した場合はこんな感じでエラーが出る。
※ 日本語のテストメソッドの出力周りがバグってるのは、環境の問題か?
突き詰めてない。
# gradle build
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar UP-TO-DATE
:assemble UP-TO-DATE
:compileTestJava
:processTestResources UP-TO-DATE
:testClasses
:test
org.nt67.FileNumberReaderTest > 失敗するテスFAILEDッド
java.lang.AssertionError at FileNumberReaderTest.java:17
11 tests completed, 1 failed
:test FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':test'.
> There were failing tests. See the report at: file:///Users/ntakeda/tmp/gradle/build/reports/tests/index.html
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 20.636 secs
実行ログに出力されているとおり、カッコイイレポートが出力されている。
gradle wrapper
Gradleセットアップをするためのもの。個々の開発環境やビルド環境で個別にgradleをセットアップするのではなく、gradle wrapperを使うことでgradle環境自体も同等のものに合わせられる。
task wrapper(type: Wrapper) { gradleVersion = '1.8'}
# gradle wrapper
:wrapper
BUILD SUCCESSFUL
Total time: 12.384 secs
~/tmp/gradle# find gradlew
gradlew
~/tmp/gradle# find gradle
gradle
gradle/wrapper
gradle/wrapper/gradle-wrapper.jar
gradle/wrapper/gradle-wrapper.properties
gradle wrapperでダウンロードされたファイルが配置されていれば、
gradle
の代わりに gradlew
を使うことができる。
初回実行時には、gradleのダウンロード/展開が実行される。
# ./gradlew build
Downloading http://services.gradle.org/distributions/gradle-1.8-bin.zip
..............................................
Unzipping /Users/ntakeda/.gradle/wrapper/dists/gradle-1.8-bin/vruqmccc8532n7gr46qavsii8/gradle-1.8-bin.zip to /Users/ntakeda/.gradle/wrapper/dists/gradle-1.8-bin/vruqmccc8532n7gr46qavsii8
Set executable permissions for: /Users/ntakeda/.gradle/wrapper/dists/gradle-1.8-bin/vruqmccc8532n7gr46qavsii8/gradle-1.8/bin/gradle
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar UP-TO-DATE
:assemble UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test
org.nt67.FileNumberReaderTest > 失敗するテスFAILEDッド
java.lang.AssertionError at FileNumberReaderTest.java:17
11 tests completed, 1 failed
:test FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':test'.
> There were failing tests. See the report at: file:///Users/ntakeda/tmp/gradle/build/reports/tests/index.html
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 26.215 secs
Eclipseで使う
既存プロジェクトとしてインポートしてもそのまま使える。
gradleで定義したタスクを使うなら、pluginがあったほうが良い。
ここでは Gradle Integration For Eclipse をEclipse Market Placeから導入。
導入後はImportの形式として "Gradle Project"が追加される。
この時、gradlew build
されていなくても、
Import時の画面からModel Buildを実行することで ecipse用の設定が生成されるのでそのままImport可能。
Eclipseからタスクを実行
パッケージエクスプローラからbuild.gradleで Run With を選ぶ。
Antの実行と同じようにタスクの一覧が並ぶ。