ScalaのCLIな開発環境 sbt を使ってjava -jarでstandalone実行可能な
jarファイルを作る方法をメモしておきます。

sbtにはプラグイン機構が備わっていて、今回は
sbtプラグインのproguardというのを利用します。
sbtプラグインは、以下のファイルを記述することで導入可能です。

project/plugins/Plugins.scala

scala>>
import sbt._
class Plugins(info: ProjectInfo)
extends PluginDefinition(info)
{
val proguard = "org.scala-tools.sbt" % "sbt-proguard-plugin" % "0.0.5"
}
<<--

ついでにProjectファイルでProguardを使うように設定します。

project/build/FooBar.scala

scala>>
import sbt._

class FooBar(info: ProjectInfo)
extends DefaultProject(info)
with ProguardProject
{
override def mainClass = Some("main.scala.FooBar")
override def proguardOptions = List(
"-keepclasseswithmembers public class * " +
"{ public static void main(java.lang.String[]); }",
proguardKeepLimitedSerializability,
proguardKeepAllScala,
"-keep interface scala.ScalaObject")
override def proguardInJars =
Path.fromFile(scalaLibraryJar) +++ super.proguardInJars
}

<<--

あとは、sbtから

pre>>
sbt> reload
sbt> update
sbt> proguard
<<--

target/scala_x.x.x/foobar_x.x.x-x.min.jar
が生成されるので、これを java -jarすれば起動できます。

posted by genki genki on Wed 9 Mar 2011 at 22:11 with 0 comments
Contents rssrss
光ファイバーを二次元振動させて走査するAR用ディスプレイ
因果の取り違え
Swift2's defer for CoffeeScript
mongodb-3.0からcreateIndexのdropDupsが無くなったらしい
mongodb-3.0以降のWiredTigerの設定を動的に変更する方法
一般楕円の高速生成アルゴリズムへの道標
farro mantecatoのレシピ
Droonga関連の記事のまとめ
RuntimeErrorの特定のメッセージに限定してrescueする方法
jQueryでscriptタグを実行せずにappendする
Tags
coffeescriptdefergroongajsmemonodenodejs
Comments rssrss
http://ldm.sakura.ne.jp/balu+bbbs/album/album.cgi?mode=detail&no=210 http://ldm.sakura.ne.jp/balu+bbbs/album/album.cgi?mode=detail&no=210: Aw, this was an incredibly good post. Taking the t... 04/25 18:19
https://www.bigbeargum.com/2019/02/15/ambrose-redmoon/ https://www.bigbeargum.com/2019/02/15/ambrose-redmoon/: Hello would you mind letting me know which hosting... 04/25 17:39
http://zeroken.jp/1978td/album/album.cgi?mode=detail&no=20 http://zeroken.jp/1978td/album/album.cgi?mode=detail&no=20: Asking questions are genuinely fastidious thing if... 04/25 17:26
https://natucci-estetica.com/?attachment_id=1376 https://natucci-estetica.com/?attachment_id=1376: Hello there, You have done a fantastic job. I wi... 04/25 17:05
https://www.waimaoz.com/23019.html?unapproved=5151&moderation-hash=a14b2a811444fc3059edb7c1441d076e https://www.waimaoz.com/23019.html?unapproved=5151&moderation-hash=a14b2a811444fc3059edb7c1441d076e: Good day! Do you use Twitter? I'd like to follow y... 04/25 16:50
https://bysystem.ru/process-proizvodstva-kartonnyh-korobok-i/ https://bysystem.ru/process-proizvodstva-kartonnyh-korobok-i/: Требовалось производство картонных коробок в сжа... 04/25 15:33
https://marialionsa.ru/proizvodstvo-kartonnyh-korobok-i-upakovki/ https://marialionsa.ru/proizvodstvo-kartonnyh-korobok-i-upakovki/: Документооборот четкий, все закрывающие акты предо... 04/25 15:05
https://example.com/oqaphq https://example.com/oqaphq: This post is genuinely a pleasant one it assists n... 04/25 12:43