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
https://listji.com/index.php?page=user&action=pub_profile&id=72479&item_type=active&per_page=16 https://listji.com/index.php?page=user&action=pub_profile&id=72479&item_type=active&per_page=16: As tһe premier furniture store аnd comprehensive f... 05/16 07:16
https://khvanchkaravino.ru https://khvanchkaravino.ru: Квартира мечты за 2 месяца — помогаем выбрать мебе... 05/16 05:06
https://www.tequilagames.com https://www.tequilagames.com: Thanks for finally writing about >something new an... 05/16 03:16
https://%EB%B6%80%EB%B9%84%EC%A3%BC%EC%86%8C.isweb.co.kr/ https://%EB%B6%80%EB%B9%84%EC%A3%BC%EC%86%8C.isweb.co.kr/: We absolutely love your blog and find a lot of you... 05/16 01:40
https://zgarcitul01.com https://zgarcitul01.com: Hi my loved one! I wish to say that this post is a... 05/16 01:10
https://pelnadobrego.pl https://pelnadobrego.pl: I love what you guys tend to be up too. This sort ... 05/15 22:11
https://bet365info.org/%f0%9f%92%b8-%d8%a8%d8%a7-%d9%87%db%8c%da%86%db%8c-%d8%af%d8%b1-%d8%a7%d9%86%d9%81%d8%ac%d8%a7%d8%b1-%d9%85%db%8c%d9%84%db%8c%d9%88%d9%86%d8%b1-%d8%b4%d9%88-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c/ https://bet365info.org/%f0%9f%92%b8-%d8%a8%d8%a7-%d9%87%db%8c%da%86%db%8c-%d8%af%d8%b1-%d8%a7%d9%86%d9%81%d8%ac%d8%a7%d8%b1-%d9%85%db%8c%d9%84%db%8c%d9%88%d9%86%d8%b1-%d8%b4%d9%88-%d8%b1%d8%a7%d9%87%d9%86%d9%85%d8%a7%db%8c/: درود، بنده امروز اتفاقی در اینترنت با این وبسایت آ... 05/15 21:26
https://linklist.bio/jutawanbetlogin https://linklist.bio/jutawanbetlogin: Hi there, You've done an excellent job. I will ce... 05/15 21:20