sbtマルチプロジェクトビルドの使いどころ

9
sbtマルチプロジェクトビルドの 使いどころ 原 一浩 @kara_d

Upload: kazuhiro-hara

Post on 07-Nov-2014

1.884 views

Category:

Technology


3 download

DESCRIPTION

Scala勉強会で5分くらいのお時間もらって発表した内容。

TRANSCRIPT

Page 1: sbtマルチプロジェクトビルドの使いどころ

sbtマルチプロジェクトビルドの使いどころ

原 一浩 @kara_d

Page 2: sbtマルチプロジェクトビルドの使いどころ

原 一浩 @kara_d http://greative.jp/

Page 3: sbtマルチプロジェクトビルドの使いどころ

sbtは複数のプロジェクトを管理可能➡ sbtのマルチプロジェクトビルド• http://scalajp.github.com/sbt-getting-started-guide-ja/multi-project/

3

import  sbt._import  Keys._

object  HelloBuild  extends  Build  {        lazy  val  root  =  Project(id  =  "hello",                  base  =  file("."))  aggregate(foo)

       lazy  val  foo  =  Project(id  =  "hello-­‐foo",                  base  =  file("foo"))}

Page 4: sbtマルチプロジェクトビルドの使いどころ

どういう場面で使うのか?➡ Play frameworkでプラグインを作成する場合で考えてみる• よくある構成

➡ 架空のLogプラグイン• model/log.(scala/java)でログの保存• $ view-log でログの確認を可能にしたい

➡ 普通は、Playプラグインとsbtプラグイン作成• リポジトリをどうする?• 配布はどうしよう?

4

サブアプリケーション + コンソールサポート

Page 5: sbtマルチプロジェクトビルドの使いどころ

Play Logプラグイン(架空)のフォルダ構成➡ app• model- log

➡ sbt-plugin-1• src- main

scala

➡ sbt-plugin-2➡ project• Build.scala

5

プラグインアプリケーション

プラグインコンソール

Page 6: sbtマルチプロジェクトビルドの使いどころ

デフォルトのPlayのBuild.scala

➡ これを、こんな風にするだけ。

6

val  main  =  PlayProject(appName,  appVersion,  appDependencies,  mainLang  =  SCALA).settings(    //  Add  your  own  project  settings  here        

) 

Page 7: sbtマルチプロジェクトビルドの使いどころ

デフォルトのBuild.scalaを変更

➡ あとは、それぞれのプラグイン情報を書くだけ

7

val  main  =  PlayProject(appName,  appVersion,  appDependencies,  mainLang  =  SCALA).settings(    //  Add  your  own  project  settings  here        

).aggregate(sbtプラグイン1,  sbtプラグイン2)

lazy  val  sbtプラグイン1  =  Project(

   プロジェクト名,    ソースフォルダの場所,    各種設定)

Page 8: sbtマルチプロジェクトビルドの使いどころ

メリット➡ Playコンソール上でpublish-local or publish一発ビルド

➡ Playコマンドで作成したプロジェクトフォルダ内で完結するためリポジトリが1個で済む

➡ Play内の情報を連携できる(settingsがPlayと共通)➡ その他、各クラスの共通化

8

Page 9: sbtマルチプロジェクトビルドの使いどころ

ありがとうございました

9

7/14 第3回playframework勉強会http://playframeworkja.doorkeeper.jp/events/1231-%E7%AC%AC3%E5%9B%9Eplayframework%E5%8B%89%E5%BC%B7%E4%BC%9A-play_ja

日本Play frameworkユーザー会https://groups.google.com/group/play_ja?hl=ja