私の質問は、sbt 0.10.1
によって管理されているプロジェクトにあるアプリケーションを実行することです。そのため、依存関係の自動管理(ダウンロードして実行する適切なクラスパスを設定する)に依存します。sbtを使用せずにsbt管理アプリケーションプロジェクトを実行するにはどうすればよいですか?
はと表示されます。アプリケーションを実行する唯一の方法は、(Ivy2の助けを借りて)クラスパスを設定する方法を知っているためです。
どのようにsbtなしでアプリケーションを実行できますか?
私の質問は、sbt 0.10.1
によって管理されているプロジェクトにあるアプリケーションを実行することです。そのため、依存関係の自動管理(ダウンロードして実行する適切なクラスパスを設定する)に依存します。sbtを使用せずにsbt管理アプリケーションプロジェクトを実行するにはどうすればよいですか?
はと表示されます。アプリケーションを実行する唯一の方法は、(Ivy2の助けを借りて)クラスパスを設定する方法を知っているためです。
どのようにsbtなしでアプリケーションを実行できますか?
また、タイプセーフの xsbt-起動スクリプトプラグイン(編集:今sbt-start-script)を使用することができます正しいクラスパスでシェルスクリプトを生成する:
このプラグインを使用すると、スクリプトを生成することができます
target/start
プロジェクト の場合このスクリプトは、プロジェクトを「インプレース」で実行します(最初にパッケージを構築するには は必要ありません)。
target/start
スクリプトはsbt run
と似ていますが、SBTでは に依存していません。sbt run
は、 がSBT自体をメモリ内に保持するため、本番運用にはお勧めできません。target/start
は、生産中の アプリを実行するためのものです。
start-script
target/start
を生成するタスクが追加されます。start-script
タスクにエイリアスされたstage
タスクも追加されます。
これはScalaアプリを実行するためのHeroku usesです。
retronymのsbt-onejar pluginを使用して、すべての依存関係が含まれる実行可能なjarを作成しました(Mavenの場合はAssembly pluginとよく似ています)。それは非常にシンプルでよく書かれています。
+1 retronymプラグインは依存関係を解凍しないので、私が提案したものよりもよく見えます。 –
すべてのアプリケーションと依存関係を含む 'fat' jarファイルを作成する場合は、sbt-assembly pluginを使用できます。それでは、標準なしでjar
としてアプリケーションを実行できます。
タスクを作成して、アプリケーションを起動するファイルを作成することもできます。 @KiptonバロスはHow do I run an sbt main class from the shell as normal command-line program?でこれを投稿:
val MkUnixlauncher = config("mkunixlauncher") extend(Compile)
val mkunixlauncher = TaskKey[Unit]("mkunixlauncher")
val mkunixlauncherTask = mkunixlauncher <<= (target, fullClasspath in Runtime) map { (target, cp) =>
def writeFile(file: File, str: String) {
val writer = new PrintWriter(file)
writer.println(str)
writer.close()
}
val cpString = cp.map(_.data).mkString(System.getProperty("path.separator"))
val launchString = """
CLASSPATH="%s"
scala -usejavacp -Djava.class.path="${CLASSPATH}" "[email protected]"
""".format(cpString)
val targetFile = (target/"scala-sbt").asFile
writeFile(targetFile, launchString)
targetFile.setExecutable(true)
}
をクラスパスは、アプリケーションを実行するために適切に設定したターゲット・ディレクトリにScalaの-SBTという名前のファイルを作成すること。微妙な味わい。
これは私が達成しようとしていたものに最も近いものです。 – Thakur
これは私が今使っているものです - 素晴らしい作品です。 – Thakur
こんにちはベン、多分あなたは[この質問](http://stackoverflow.com/questions/23607291/run-a-sbt-created-app-without-sbt)のヒントを持っていますか? 'sbt-start-script'の完全な例は本当に歓迎です。 –
これはまだ行く方法ですか?ちょっと興味があるんだけど.. – alapeno