scalasbtupstartsbt-native-packager

How can I create an Upstart Zip package using sbt-native-packager?


I am unable to generate an upstart zip package. I have added the following to my sbt project

...
enablePlugins(UpstartPlugin).
enablePlugins(JavaServerAppPackaging)

and then run

sbt clean universal:packageBin

And a Zip file is produced but it contains the shell script in ./bin and the jars in ./lib that look like what is produced when I use JavaAppPackaging!

Where are the conf files etc needed for upstart? Am I missing the secret sauce or using the wrong incantation?

Reading all the docs at this page I am under the impression that the archetype plugins determine what goes into my package while the format plugins determine what form the package takes.

So for example I could have a Java Server project that is designed to launch running as a daemon user using the JavaServerAppPackaging (archetype) and adding the daemonUser setting, but then have this bundled up as a Zip or Tar.gz using the Universal (format) plugin or a .deb file using the Debian (format) plugin.

Well I want a Java Service with all the files necessary to be started with the upstart System Loader but packaged as a Zip file. So I assume I need the upstart (archetype system loader) plugin with the universal (format) plugin.

There is even a tip on the system loader docs for the upstart plugin saying

You can use systemloaders with the Java Application Archetype or the Java Server Application Archetype!

Well that exactly what I want however it doesn't state how to do it!

Please can someone tell me how to get a zip bundle with an upstart layout that starts a Java Server application? And if you can point out the documentation I have clearly missed than that would help my understanding too :-)

Cheers

Karl


Solution

  • Thanks for ready the docs so carefully and sorry that the docs are lacking an explanation what package types support system loaders.

    The short answer is: only rpm and debian packages support system loaders ( systemd, systemV and upstart ).

    Why is that so? A system loader is tight to the target operation system. It's nothing universal, which is the reason it's not in there. The configuration files and or scripts and platform dependent and this is not part of your regular application directory.

    Cheers, Muki