introduces new setting for a Bootable to sbt plugin (#2701)
- type is Setting[String] - defaults to empty String - is used for generating the start and start.bat scripts (cherry picked from commit b1a011466052fa0f5ef8ca2ad45e77453381704a)
This commit is contained in:
parent
57f0bd0637
commit
db5e04f3d8
1 changed files with 15 additions and 9 deletions
|
|
@ -19,6 +19,7 @@ object AkkaKernelPlugin extends Plugin {
|
|||
configSourceDirs: Seq[File],
|
||||
distJvmOptions: String,
|
||||
distMainClass: String,
|
||||
distBootClass: String,
|
||||
libFilter: File ⇒ Boolean,
|
||||
additionalLibs: Seq[File])
|
||||
|
||||
|
|
@ -30,8 +31,12 @@ object AkkaKernelPlugin extends Plugin {
|
|||
val configSourceDirs = TaskKey[Seq[File]]("config-source-directories",
|
||||
"Configuration files are copied from these directories")
|
||||
|
||||
val distJvmOptions = SettingKey[String]("kernel-jvm-options", "JVM parameters to use in start script")
|
||||
val distMainClass = SettingKey[String]("kernel-main-class", "Kernel main class to use in start script")
|
||||
val distJvmOptions = SettingKey[String]("kernel-jvm-options",
|
||||
"JVM parameters to use in start script")
|
||||
val distMainClass = SettingKey[String]("kernel-main-class",
|
||||
"main class to use in start script, defaults to akka.kernel.Main to load an akka.kernel.Bootable")
|
||||
val distBootClass = SettingKey[String]("kernel-boot-class",
|
||||
"class implementing akka.kernel.Bootable, which gets loaded by the default 'distMainClass'")
|
||||
|
||||
val libFilter = SettingKey[File ⇒ Boolean]("lib-filter", "Filter of dependency jar files")
|
||||
val additionalLibs = TaskKey[Seq[File]]("additional-libs", "Additional dependency jar files")
|
||||
|
|
@ -50,9 +55,10 @@ object AkkaKernelPlugin extends Plugin {
|
|||
configSourceDirs <<= defaultConfigSourceDirs,
|
||||
distJvmOptions := "-Xms1024M -Xmx1024M -Xss1M -XX:MaxPermSize=256M -XX:+UseParallelGC",
|
||||
distMainClass := "akka.kernel.Main",
|
||||
distBootClass := "",
|
||||
libFilter := { f ⇒ true },
|
||||
additionalLibs <<= defaultAdditionalLibs,
|
||||
distConfig <<= (outputDirectory, configSourceDirs, distJvmOptions, distMainClass, libFilter, additionalLibs) map DistConfig)) ++
|
||||
distConfig <<= (outputDirectory, configSourceDirs, distJvmOptions, distMainClass, distBootClass, libFilter, additionalLibs) map DistConfig)) ++
|
||||
Seq(dist <<= (dist in Dist), distNeedsPackageBin)
|
||||
|
||||
private def distTask: Initialize[Task[File]] =
|
||||
|
|
@ -69,7 +75,7 @@ object AkkaKernelPlugin extends Plugin {
|
|||
|
||||
log.info("Creating distribution %s ..." format conf.outputDirectory)
|
||||
IO.createDirectory(conf.outputDirectory)
|
||||
Scripts(conf.distJvmOptions, conf.distMainClass).writeScripts(distBinPath)
|
||||
Scripts(conf.distJvmOptions, conf.distMainClass, conf.distBootClass).writeScripts(distBinPath)
|
||||
copyDirectories(conf.configSourceDirs, distConfigPath)
|
||||
copyJars(tgt, distDeployPath)
|
||||
|
||||
|
|
@ -109,7 +115,7 @@ object AkkaKernelPlugin extends Plugin {
|
|||
Seq.empty[File]
|
||||
}
|
||||
|
||||
private case class Scripts(jvmOptions: String, mainClass: String) {
|
||||
private case class Scripts(jvmOptions: String, mainClass: String, bootClass: String) {
|
||||
|
||||
def writeScripts(to: File) = {
|
||||
scripts.map { script ⇒
|
||||
|
|
@ -131,8 +137,8 @@ object AkkaKernelPlugin extends Plugin {
|
|||
|AKKA_CLASSPATH="$AKKA_HOME/config:$AKKA_HOME/lib/*"
|
||||
|JAVA_OPTS="%s"
|
||||
|
|
||||
|java $JAVA_OPTS -cp "$AKKA_CLASSPATH" -Dakka.home="$AKKA_HOME" %s "$@"
|
||||
|""".stripMargin.format(jvmOptions, mainClass)
|
||||
|java $JAVA_OPTS -cp "$AKKA_CLASSPATH" -Dakka.home="$AKKA_HOME" %s %s "$@"
|
||||
|""".stripMargin.format(jvmOptions, mainClass, bootClass)
|
||||
|
||||
private def distBatScript =
|
||||
"""|@echo off
|
||||
|
|
@ -140,8 +146,8 @@ object AkkaKernelPlugin extends Plugin {
|
|||
|set AKKA_CLASSPATH=%%AKKA_HOME%%\config;%%AKKA_HOME%%\lib\*
|
||||
|set JAVA_OPTS=%s
|
||||
|
|
||||
|java %%JAVA_OPTS%% -cp "%%AKKA_CLASSPATH%%" -Dakka.home="%%AKKA_HOME%%" %s %%*
|
||||
|""".stripMargin.format(jvmOptions, mainClass)
|
||||
|java %%JAVA_OPTS%% -cp "%%AKKA_CLASSPATH%%" -Dakka.home="%%AKKA_HOME%%" %s %s %%*
|
||||
|""".stripMargin.format(jvmOptions, mainClass, bootClass)
|
||||
|
||||
private def setExecutable(target: File, executable: Boolean): Option[String] = {
|
||||
val success = target.setExecutable(executable, false)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue