倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

sbt × Eclipse スタートアップ

前回、IntelliJ IDEA で sbt プロジェクトを扱う方法を見ましたが、今回はそれの Eclipse 版。 ただし、Eclipse は Scala プラグインである Scala IDE for Eclipse をインストールしても(今のところ) sbt プロジェクトをそのままインポートすることができないようなので、sbt に Eclipse プラグインをインストール(1行のテキスト・ファイルを配置するだけ)して Eclipse の設定ファイルを生成する必要があります。 また、Eclipse から sbt プロジェクトを新規作成することはできません。 まぁ、どちらもそのうちサポートされるかも知れませんが。

ちなみに Scala IDE for Eclipse をインストールすると、ScalaTest は JUnit みたいに使うことができるようです。

内容

Scala IDE for Eclipse をインストールする

Scala IDE for Eclipse は以下のアップデートサイトからインストールできます(Scala 2.11.6):

http://download.scala-ide.org/sdk/lithium/e44/scala211/stable/site

最近 Eclipse のプラグインをインストールしてなかったので(というか Eclipse 使ってなかったので)、思い出すためにインストール方法を見ていきましょう。 まず

[メニューバー] → [Help] → [Install New Software...]

から「Install」ダイアログを開いて以下の手順を実行します:


f:id:waman:20150529101111p:plain
f:id:waman:20110105151547p:plain

f:id:waman:20150529101118p:plain
f:id:waman:20110105151547p:plain

f:id:waman:20150529101123p:plain
f:id:waman:20110105151547p:plain

f:id:waman:20150529101128p:plain
f:id:waman:20110105151547p:plain

f:id:waman:20150529101133p:plain
f:id:waman:20110105151547p:plain

f:id:waman:20150529101137p:plain


リポジトリを登録しないといけないのがちょこっと面倒。 まぁ、URL をコピペするだけだけど。

Eclipse で文字エンコーディングを設定する

sbt に直接関係ないんだけど、IntelliJ IDEA でやったように IDE の文字エンコーディングを設定する方法を見ておきます。
設定するには、「Eclipse で設定と言えば・・・」の

[メニューバー] → [Window] → [Preferences]

で「Preferences」ダイアログを開いて、以下のように設定します:


f:id:waman:20150529101447p:plain

sbt から Eclipse プロジェクトの設定ファイルを生成する

(今のところ)Eclipse から直接 sbt プロジェクトは読み込めないようで、まずは sbt に Eclipse プラグインをインストールして、「sbt eclipse」コマンドによって Eclipse の設定ファイルを生成してあげないといけません。 まぁ、「sbt に Eclipse プラグインをインストール」って言っても大して難しくありません。 このプラグインは

で開発されてます。

sbt に Eclipse プラグインをインストール
sbt プロジェクトのルート・ディレクトリ下にある「project」ディレクトリ(なければ作成)に以下のような内容の plugins.sbt ファイルを作成します:

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "3.0.0")

プラグインのインストールと言ってもこれだけ。

Eclipse の設定ファイルを生成する
次は sbt から Eclipse の設定ファイルを生成します。 sbt プロジェクトのルート・ディレクトリで「sbt eclipse」コマンドを実行します

> sbt eclipse
Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
[info] Loading project definition from C:\Users\...\workspace\scala\sbt-test\project
...
[info] Resolving jline#jline;2.12.1 ...
[info] Done updating.
[info] Successfully created Eclipse project files for project(s):
[info] sbt-test

実行が成功すると、以下の太字のファイル、ディレクトリが生成されているはずです:

  • 《プロジェクト・ルート》
    • build.sbt
    • project/
      • plugins.sbt
    • src/
    • target/
    • .project
    • .classpath
    • .settings/

特に何ということはないですね。

Eclipse へ sbt プロジェクトをインポートする

最後は sbt プロジェクトを Eclipse へ読み込みます。 プロジェクトの型として「sbt プロジェクト」ってのはないようなので、「Existing Projects into Workspace」で読み込みます。

[メニューバー] → [File] → [Import...]

から「Import」ダイアログを開いて、以下の手順を実行します:


f:id:waman:20150529104528p:plain
f:id:waman:20110105151547p:plain

f:id:waman:20150529104533p:plain


これも大して難しくないですな。

git...

この sbt × Eclipse プロジェクトを git で管理する場合、ローカル PC だけで管理するならクラスファイルなどが配置される「bin」ディレクトリを git 無視すれば OK(sbt がクラスファイル等を配置するすべき 「target」 ディレクトリも git 無視)。 ただし、github など、複数人で開発するプロジェクトで git 管理する場合は、「.classpath」ファイルにローカルのパスががっつりハードコーディングされてるので結構まずいみたいです。 しかたないので sbt の Eclipse プラグインが生成する設定ファイルは git 無視して、各 PC で「sbt eclipse」して Eclipse へインポートするしかないかなと。 ということで .gitignore はこんな感じじゃないでしょうかね:

target/
.project
.classpath
.settings/
bin/

生成される .classpath

sbt の Eclipse プラグインで生成される .classpath を見ると、コンパイルによって生成されるクラスファイルは「bin」ディレクトリ下に配置され、sbt でデフォルトの「target」ディレクトリ下には配置されません。 ちょっと設定すれば sbt と同じように配置することもできますが、そうなっていないのは何故なんでしょうかね。 Eclipse のコンパイラが特殊なので、Eclipse のコンパイラが生成するクラスファイルと sbt が生成するクラスファイルを分けときたい、とかあるのかな? あと、src/main/java とか src/test/resouces とかのディレクトリが自動生成されるけど、sbt プロジェクト(というか Scala プロジェクト)ってそんなに Java コード書くもんなのかな? 自動生成するのは scala コード用のディレクトリだけにして、後は必要になったら手動で作成するってのでいいと思うんだけど。
Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear)

Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear)

Scalaスケーラブルプログラミング第2版

Scalaスケーラブルプログラミング第2版

  • 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘
  • 出版社/メーカー: インプレスジャパン
  • 発売日: 2011/09/27
  • メディア: 単行本(ソフトカバー)
  • 購入: 12人 クリック: 235回
  • この商品を含むブログ (46件) を見る