S-JIS[2014-08-30] 変更履歴

Gradle Scalaプラグイン

Gradleでは、ScalaプラグインでScalaソースをビルド(コンパイル)してjarファイルを生成することが出来る。

 

Scalaのプロジェクトを作る例。

build.gradle:

apply plugin: 'scala'
apply plugin: 'eclipse'

defaultTasks 'jar'

group = 'jp.hishidama.scala'
version = '0.1-SNAPSHOT'

sourceCompatibility = 1.7
targetCompatibility = 1.7

eclipseJdt << {
    File f = file('.settings/org.eclipse.core.resources.prefs')
    f.write('eclipse.preferences.version=1\n')
    f.append('encoding/<project>=UTF-8')
}

repositories {
    mavenCentral()
//  mavenLocal()
}

dependencies {
    compile 'org.scala-lang:scala-library:2.10.4'
//  testCompile 'junit:junit:4.13'
}

task wrapper(type: Wrapper) {
    gradleVersion '2.0'
    jarFile file('.buildtools/gradlew.jar')
}

実行方法

> gradle wrapper

> ./gradlew eclipse
:eclipseClasspath
:eclipseJdt
:eclipseProject
:eclipse

BUILD SUCCESSFUL

Total time: 4.605 secs

gradleコマンドにeclipseタスクを指定して実行すると、Eclipseのプロジェクトの定義が作成される。

「./gradlew jar」のようにjarタスクを指定すると、jarファイルの生成までが行われる。


GradleのScalaプラグインでは、特に指定しない場合は以下のようなディレクトリー構成を想定している。
Mavenの構成とそっくり)

ビルドを実行すると、プロジェクトディレクトリーの下に以下のようなディレクトリーが作られる。

生成されるjarファイル名は、デフォルトでは「プロジェクトディレクトリー名.jar」となる。


ビルドエラー

Scalaプラグインの設定をしてコマンドを実行すると、以下のようなエラーが発生したorz

$ gradle eclipse

FAILURE: Build failed with an exception.

* Where:
Build file 'D:\workspace\scala-example\build.gradle' line: 1

* What went wrong:
A problem occurred evaluating root project 'scala-example'.
> Could not create task of type 'ScalaDoc'.

* 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: 3.409 secs

Gradle1.12のScalaプラグインはJDK1.8に対応しておらず、このようなエラーになるらしい。

使用するJDKを1.7にする(JAVA_HOMEにJDK1.7のパスを指定する)とエラーは出なくなる。
ただし、当然コンパイルバージョンが1.7までしか対応ないので、sourceCompatibilityやtargetCompatibilityに1.8を指定するとコンパイルエラーになってしまうが…。

もしくは、Gradle2だとJDK1.8に対応しているらしい。

参考: Gradle TopicsのEnable to setup a simple scala build


Gradle目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま