KZKY memo

自分用メモ.

Eclipse + Gradle + Scalaで開発

EclipseでGradleを使ってScalaで開発をする時のセットアップと配布物(distribution, fatjar, jar-with-dependency)を作る際のメモ

Eclipse との連携基本

Gradle IDE

help -> eclipse market place -> gradle ide

Groovy Eclipse

gradle DSLのサポートをするためにgroovy eclipseを入れる

Project setup

  • new project -> gradle project -> java quick start (scala quick startはない様)
  • project上で右クリ -> Configure -> add scala nature
project directory schema
src/main/java
src/main/resources
src/test/java
src/test/resources
build/libs
mkdir
src/main/scala
src/test/scala
build.gradle
...
apply plugin: 'scala'
...
dependencies {
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
    compile 'org.scala-lang:scala-library:2.10.3' // 追加
    testCompile group: 'junit', name: 'junit', version: '4.+'
}
...
build
  • project上で右クリ -> Run As -> Gradle Build...
  • Type tasks in the editor below. Use + to activate content assistantの中にTask(s)を入れる
  • Runボタンを押す

task ex1

clean
build

task ex2

clean
assemble
libがないと怒られる場合

org.apache.commonsがないとか怒られる

  • project上で右クリ -> Gradle -> RefreshXXX

各種plugin

Application Plugin

http://www.gradle.org/docs/current/userguide/application_plugin.html

  • distributionを作るプラグイン
  • /pathto/project/build/distributions/ に配布物ができる
  • fatjarができるわけではないので注意
  • build/distributions/${project_name}.zip に依存関連のjar files,
  • build/libs/${project_name}.jarに依存関連なしのアプリケーションができる
    • これらを使ってもいいかも

build.gradle

...
apply plugin:'application'
...
//mainClassName = "" // 空にしといてコマンド実行時に指定でも良いかも
mainClassName = "pathto.pkg.Main" // 指定しないと怒られるのでとりあえず指定

build

$ gradle distZip
  • project上で右クリ -> Run As -> Gradle Build...で良い.

できたdistributionの実行の仕方はいくつかあって

1. projectの下(gradle.bulidがあるとこ)でgradle run
2. build/distributions/${project_name}-${version}.zipを解凍して, bash bin/${project_name}
3. build/distributions/${project_name}-${version}.zipを解凍して, *.jarをclasspathに指定して,java -classpath "pathto/lib/*" pkg.to.main

Fat Jar

参考URLs

jar-with-dependenciesなjarファイルを作るにはいくつかやり方があるよう.
上記3つのURLのやり方は

  • fatjar pluginを使う
  • eu.appsatori.fatjarを使う
  • uberjarというタスクを定義して自作

一番簡単そうなのは2つ目

  • build.gradle

これを先頭に追加 (Main-Classは特に指定しなくてもいい)

buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'eu.appsatori:gradle-fatjar-plugin:0.3'
    }
}

apply plugin: 'eu.appsatori.fatjar'
....

project上で右クリ -> Run As -> Gradle Build...

clean
fatJar

/pathto/project/build/libs にfatjarができる