A Webstart plugin for sbt
Scala
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
project
src/main/scala
.gitignore
LICENSE
README
build.sbt

README

A Webstart plugin for sbt

At the moment, this is only a rough draft, just enough to get my own
projects running. Let me know what you think.

To build this code, get and install SBT from
    https://github.com/sbt/sbt

Get and install these plugins before building:
    https://github.com/ritschwumm/xsbt-util
    https://github.com/ritschwumm/xsbt-classpath

Build and publish the plugin:
    git clone git@github.com:ritschwumm/xsbt-webstart.git
    cd xsbt-webstart
    sbt publish-local

Add the plugin to your project in project/plugins.sbt:
    addSbtPlugin("de.djini" % "xsbt-webstart" % <version>)

Include the plugin in your project's build.sbt:

    webstartGenConfig := Some(GenConfig(
        dname       = "CN=Snake Oil, OU=An Anonymous Hacker, O=Bad Guys Inc., L=Bielefeld, ST=33641, C=DE",
        validity    = 365
    ))

    webstartKeyConfig := Some(KeyConfig(
        keyStore    = file("my/keyStore"),
        storePass   = "password",
        alias       = "alias",
        keyPass     = "password"
    ))

    webstartJnlpConfigs    := Seq(JnlpConfig(
        fileName    = "my.jnlp",
        descriptor  = (fileName:String, assets:Seq[JnlpAsset]) => {
            <jnlp spec="6.0+" codebase="$$codebase" href={fileName}>
                <information>
                    <title>My Title</title>
                    <vendor>My Company</vendor>
                    <description>My Webstart Project</description>
                    <icon href="my_icon.png"/>
                    <icon href="my_splash.png" kind="splash"/>
                </information>
                <security>
                    <all-permissions/>
                </security>
                <resources>
                    <j2se version="1.7+" max-heap-size="192m"/>
                    { assets map { _.toElem } }
                </resources>
                <application-desc main-class="my.Main"/>
            </jnlp>
        }
    ))

    /*
    on osx this file must contain the line
    Permissions: all-permissions
    or the java security settings cannot be set to "very high"
    */
    webstartManifest    := Some(file("path/to/MANIFEST.MF"))

Once set up you can use the following tasks in sbt:

    webstart        creates a directory with a JNLP file and all necessary jar files
    webstart-keygen creates a keyStore, fails if it already exists