object AshScriptPlugin extends AutoPlugin

Java Application

This class is an alternate to JavaAppPackaging designed to support the ash shell. JavaAppPackaging generates bash-specific code that is not compatible with ash, a very stripped-down, lightweight shell used by popular micro base Docker images like BusyBox. The AshScriptPlugin will generate simple ash-compatible output.

Just like with JavaAppPackaging you can override the bash-template file by creating a src/templates directory and adding your own bash-template file. Actually this isn't a bad idea as the default bash-template file inherited from JavaAppPackaging has a lot of stuff you probably don't want/need in a highly-constrained environment like ash+BusyBox. Something much simpler will do, for example:

#!/usr/bin/env sh

realpath () { ( TARGET_FILE="$1"

cd "$(dirname "$TARGET_FILE")" TARGET_FILE=$(basename "$TARGET_FILE")

COUNT=0 while [ -L "$TARGET_FILE" -a $COUNT -lt 100 ] do TARGET_FILE=$(readlink "$TARGET_FILE") cd "$(dirname "$TARGET_FILE")" TARGET_FILE=$(basename "$TARGET_FILE") COUNT=$(($COUNT + 1)) done

if [ "$TARGET_FILE" == "." -o "$TARGET_FILE" == ".." ]; then cd "$TARGET_FILE" TARGET_FILEPATH= else TARGET_FILEPATH=/$TARGET_FILE fi

echo "$(pwd -P)/$TARGET_FILE" ) }

real_script_path="$(realpath "$0")" app_home="$(realpath "$(dirname "$real_script_path")")" lib_dir="$(realpath "${app_home}/../lib")"

${{template_declares}}

java -classpath $app_classpath $app_mainclass $@

Configuration

This plugin adds new settings to configure your packaged application. The keys are defined in com.typesafe.sbt.packager.archetypes.JavaAppKeys

Example:
  1. Enable this plugin in your build.sbt with

    enablePlugins(AshScriptPlugin)
Linear Supertypes
AutoPlugin, PluginsFunctions, Basic, Plugins, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. AshScriptPlugin
  2. AutoPlugin
  3. PluginsFunctions
  4. Basic
  5. Plugins
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. def &&(o: Basic): Plugins
    Definition Classes
    Basic → Plugins
  4. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  5. def allRequirements: PluginTrigger
    Definition Classes
    PluginsFunctions
  6. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  7. val ashForwarderTemplate: String
  8. val ashTemplate: String
  9. def buildSettings: Seq[sbt.Def.Setting[_]]
    Definition Classes
    AutoPlugin
  10. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  11. def derivedProjects(proj: ProjectDefinition[_]): Seq[Project]
    Definition Classes
    AutoPlugin
  12. def empty: Plugins
    Definition Classes
    PluginsFunctions
  13. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  14. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  15. def extraProjects: Seq[Project]
    Definition Classes
    AutoPlugin
  16. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  17. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  18. def globalSettings: Seq[sbt.Def.Setting[_]]
    Definition Classes
    AutoPlugin
  19. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  20. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  21. val label: String
    Definition Classes
    AutoPlugin
  22. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  23. def noTrigger: PluginTrigger
    Definition Classes
    PluginsFunctions
  24. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  25. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  26. def projectConfigurations: Seq[Configuration]
    Definition Classes
    AutoPlugin
  27. def projectSettings: Seq[sbt.Def.Setting[_ >: Task[Seq[String]] with Task[Option[File]] with Task[File] <: Task[_ >: Seq[String] with Option[File] with File <: AnyRef]]]
    Definition Classes
    AshScriptPlugin → AutoPlugin
  28. def requires: Plugins
    Definition Classes
    AshScriptPlugin → AutoPlugin
  29. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  30. def toString(): String
    Definition Classes
    AutoPlugin → AnyRef → Any
  31. def trigger: PluginTrigger
    Definition Classes
    AutoPlugin
  32. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  33. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  34. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  35. object Defines

    Ash defines

Inherited from AutoPlugin

Inherited from PluginsFunctions

Inherited from Basic

Inherited from Plugins

Inherited from AnyRef

Inherited from Any

Ungrouped