Gradle で Java アプリのプロジェクトを作成して Eclipse にインポートするまでの手順

公開日: : Java , , , ,

Mac に SDKMAN! を使って Gradle をインストールしたので、実際にプロジェクトを作成してみた。
作成したプロジェクトに自分なりの初期設定を行った上で、Eclipse にインポートすることがゴール。

以下の目次が実際に試した設定になっている(1から6まで)。

GradleLogoReg

目次

1. Gradle を使って Java アプリのプロジェクトを作成するには

Maven の mvn archetype:generate のように Gradle もプロジェクト作成のコマンドは用意されており、Java アプリのプロジェクトを作成する場合は gradle init --type java-library を実行すればよい。
ただし、プロジェクトのディレクトリは作成してくれないので事前に作成しておくこと。

上記のコマンドを実行した直後のディレクトリ構成は以下のようになる。

$ pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/| /g'
/Users/tomoyamkung/tmp/gradle_sample
|--.gradle
| |--2.7
| | |--taskArtifacts
| | | |--cache.properties
| | | |--cache.properties.lock
| | | |--fileHashes.bin
| | | |--fileSnapshots.bin
| | | |--outputFileStates.bin
| | | |--taskArtifacts.bin
|--build.gradle
|--gradle
| |--wrapper
| | |--gradle-wrapper.jar
| | |--gradle-wrapper.properties
|--gradlew
|--gradlew.bat
|--settings.gradle
|--src
| |--main
| | |--java
| | | |--Library.java
| |--test
| | |--java
| | | |--LibraryTest.java

tree コマンドの代替はLinux – tree コマンドが無い環境で tree コマンドを実現 – Qiita を参考にした

src/main/java, src/test/java ディレクトリが作られるところなど基本のディレクトリ構成は Maven と同じ仕様になっている。

src/main/resources, src/test/resources ディレクトリは作成してくれないので、以下の記事のように resources ディレクトリ作成タスクを作って自動生成させてもよいし、1度しか実行しないので手動で作成してもよい。

以下は自動化手順の抜粋(引用)。

build.gradle に以下を追加したあとに gradle initDirs を実行する。

task initDirs {
   sourceSets*.resources.srcDirs*.each { it.mkdirs() }
}

軽く調べた程度だが Maven のように Web アプリ用のプロジェクトを作成してくれる type は存在しないようだった。
あとでもう一度調べてみる。

2. プロジェクトの Java コンパイラバージョンを指定するには

Maven では以下のように maven-compiler-plugin でコンパイラのバージョンを指定できた。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.0</version>
  <configuration>
    <source>1.7</source>
    <target>1.7</target>
    <encoding>UTF-8</encoding>
  </configuration>
</plugin>

一方 Gradle ではもっとシンプルに書ける。どうせコピペするのだが記述量の少なさはうれしい。

sourceCompatibility = '1.8'
targetCompatibility = '1.8'

3. ソースコードのエンコードを UTF-8 に指定するには

コンパイルは compileJava タスクで行われるので build.gradle に compileJava タスクのオプションとして指定する。

compileJava {
    options.encoding = 'UTF-8'
}

4. プロジェクトで使用するライブラリ(dependencies)を追加するには

すでに build.gradle に slf4j-api と junit が設定されているので省略しようと思ったが、よく使う次のライブラリの dependencies を載せておく。完全に自分用。

  • slf4j-simple
  • lombok
  • google guava
  • commons lang3
  • hamcrest-library
  • mockito
compile 'org.slf4j:slf4j-simple:1.7.12'
compile 'org.slf4j:org.projectlombok:lombok:1.16.6'
compile 'com.google.guava:guava:18.0'
compile 'org.apache.commons:commons-lang3:3.4'

testCompile 'org.hamcrest:hamcrest-library:1.3'
testCompile 'org.mockito:mockito-all:1.9.5'

pom.xml ではライブラリのバージョンを変数に定義してバージョン統一をしていた。
build.gradle でも同じことができるんだろうなぁと思いつつまだ試していない。

5. ユニットテストを実行するには

Gradle からユニットテストを実行するには test タスクを実行する。

これは個人的なクセなのだが、ユニットテストを実行する際には毎回 .class ファイルをすべて削除している。
キレイにしてからユニットテストを実行するには以下のコマンドを実行する。Maven と同じだ。

$ gradle clean test

6. 作成したプロジェクトを Eclipse にインポートするには

Eclipse プラグインを使って Eclipse のインポートに必要なファイルを作成する。
build.gradle に以下を追加する。

apply plugin: 'eclipse'

Eclipse が参照する .classpath, .project. .settings ディレクトリの生成は eclipse タスクを実行すると作成される。

$ gradle eclipse

あとは Eclipse からこのプロジェクトをインポートするだけ。

7. ここまでの build.gradle

これで自分なりの初期設定が完了した。
この時点での build.gradle を貼り付けておけば今後のコピペが捗るはずだ。

apply plugin: 'java'
apply plugin: 'eclipse'

sourceCompatibility = '1.8'
targetCompatibility = '1.8'

compileJava {
    options.encoding = 'UTF-8'
}

repositories {
    jcenter()
}

dependencies {
    compile 'org.slf4j:slf4j-api:1.7.12'
    compile 'org.slf4j:slf4j-simple:1.7.12'
    compile 'org.projectlombok:lombok:1.16.6'
    compile 'com.google.guava:guava:18.0'
    compile 'org.apache.commons:commons-lang3:3.4'

    testCompile 'junit:junit:4.12'
    testCompile 'org.hamcrest:hamcrest-library:1.3'
    testCompile 'org.mockito:mockito-all:1.9.5'
}

task initDirs {
    sourceSets*.resources.srcDirs*.each { it.mkdirs() }
}

8. 更新履歴

  • 2015/09/30: 初版作成

Googleアドセンス用(PC)

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

関連記事

no image

Java から VBScript を使って Excel を印刷する

背景 Java のデスクトップアプリを作成していたときの要件に「Excel で作成された帳票を印刷

記事を読む

no image

Jetty でシンプルなプロジェクトを作成してみた

プロトタイプを作成するなら Tomcat よりも Jetty のほうがさらっと出来そうだなぁ、と今さ

記事を読む

medium_182531101

ClassLoader を使って getResourceAsStream で取得したファイルを UTF-8 で読み込む

よく使う割には覚えられず毎回調べている気がするので備忘録としてメモしておきます。 文字コードを指定し

記事を読む

no image

画像ファイルのサイズ(縦横じゃなくて容量)を取得するスニペット

File#length で取得できるとは知らなかった。Gist にも登録済み。 /** * 画

記事を読む

icatch-zip_524574337_mini-thumbnail

Java でファイルが1つだけ圧縮された zip を解凍するサンプル

ファイルが1つだけ圧縮された zip を解凍するサンプルです。 単一ファイルが圧縮された zip

記事を読む

no image

プロセスの起動を確認するプログラム

プロセスが起動しているかを確認するプログラムを Java で書いてみました。Excel のプロセス確

記事を読む

no image

ファイルに関するユーティリティ

ファイルに関するスニペットをいくつか書いた。いつかコピペする日が来ると思うのでメモしておく。 作成

記事を読む

icatch-thumbnail

レスポンスにサムネイル画像を返す API のサンプル

今回は直接 ImageMagick は関係ありませんが、また画像ネタです。この辺りのことを仕事で扱っ

記事を読む

no image

Exec Maven Plugin で maven コマンドでアプリを起動する

packaging タグに "jar" を指定した Maven プロジェクトをコマンドラインから起動

記事を読む

icatch-upload_1229138273_mini-thumbnail

InputStream に格納されているストリームデータのサイズを取得する

Jersey を使った Web アプリを作成中なんですが、 enctype="multipart/f

記事を読む

Googleアドセンス用(PC)

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


× 3 = 二十 七

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Googleアドセンス用(PC)

icatch-jersey_multi_pathparams
Jerseyの@PathParamはスラッシュの間に複数指定できる

http://hoge-api/user/{id}.{format}

icatch-vagrant_box_customize
VagrantのBoxファイルをカスタマイズして独自のBoxファイルを作成する

配布されている Vagrant の Box ファイルを使って検証環境を

icatch-2015-006-1
バリデーションチェックにJava8のOptionalを使ってスマートに書く(自分比)

Web アプリのバリデーションチェックにアノテーションを使うことが増え

icatch-2015-005-1
ユニットテストの偏りを防ぐ命名規則の付け方

ユニットテスト名に以下の命名規則を付けるようにして二ヶ月ぐらい経った。

icatch-2015-004-1
Vagrantで起動したCentOS上のOctopressをホストOSから確認する設定

タイトルの通りだが、Vagrant を使って起動した CentOS に

→もっと見る

PAGE TOP ↑