Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


SBT Native Packager

Subscribe to updates I use sbt-native-packager

Statistics on sbt-native-packager

Number of watchers on Github 995
Number of open issues 93
Average time to close an issue 9 days
Main language Scala
Average time to merge a PR 5 days
Open pull requests 35+
Closed pull requests 22+
Last commit over 2 years ago
Repo Created over 8 years ago
Repo Last Updated over 2 years ago
Size 8.48 MB
Homepage https://sbt-nativ...
Organization / Authorsbt
Latest Releasev1.3.3
Page Updated
Do you use sbt-native-packager? Leave a review!
View open issues (93)
View sbt-native-packager activity
View on github
Fresh, new opensource launches πŸš€πŸš€πŸš€
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating sbt-native-packager for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

SBT Native Packager

Build Status Build status Codacy Badge Download Join the chat at https://gitter.im/sbt/sbt-native-packager Documentation Status

Native Packager Logo


SBT native packager lets you build application packages in native formats. It offers different archetypes for common configurations, such as simple Java apps or server applications.


  • Discussion/Questions: If you wish to ask questions about the native packager, we have a mailinglist and we're very active on Stack Overflow. You can either use the sbt tag or the sbt-native-packager tag. They also have far better search support for working around issues.
  • Docs: Our docs are available online. If you'd like to help improve the docs, they're part of this repository in the src/sphinx directory. ScalaDocs are also available.

The old documentation can be found here

  • Issues/Feature Requests: Finally, any bugs or features you find you need, please report to our issue tracker. Please check the compatibility matrix to see if your system is able to produce the packages you want.


  • Build native packages for different systems
    • Universal zip,tar.gz, xz archives
    • deb and rpm packages for Debian/RHEL based systems
    • dmg for OSX
    • msi for Windows
    • docker images
  • Provide archetypes for common use cases
  • Java8 jdkpackager wrapper
  • Optional JDeb integration for cross-platform Debian builds
  • Optional Spotify docker client integration


Add the following to your project/plugins.sbt file:

// for autoplugins
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.3.3")

In your build.sbt enable the plugin you want. For example the JavaAppPackaging.


Or if you need a server with autostart support



If you have enabled one of the archetypes (app or server), you can build your application with

sbt <config-scope>:packageBin


# universal zip
sbt universal:packageBin

# debian package
sbt debian:packageBin

# rpm package
sbt rpm:packageBin

# docker image
sbt docker:publishLocal

Read more in the specific format documentation on how to configure and build your package.


There's a complete getting started guide and more detailed topics available at the sbt-native-packager site.

Please feel free to contribute documentation, or raise issues where you feel it may be lacking.


Please read the contributing.md on how to build and test native-packager.

Related SBT Plugins

These are a list of plugins that either use sbt-native-packager, provide additional features or provide a richer API for a single packaging format.


  • Nepomuk Seiler (@muuki88)
  • Alexey Kardapoltsev (@kardapoltsev)
  • Derek Wickern (@dwickern)
  • Felix Satyaputra (@fsat)


sbt-native-packager open issues Ask a question     (View All Issues)
  • over 3 years Ability to combine multiple commands in one RUN statement?
  • over 3 years Don't override packageName in UniversalPlugin
  • over 3 years Docker authentication fails with latest milestone
  • almost 4 years Rework mappings documentation
  • almost 4 years Docker Image 'chown -R daemon:daemon' duplicates application layer
  • almost 4 years System properties not working in Ash Script
  • almost 4 years Integrate mention-bot
  • almost 4 years Environment Variables in Command Not Handled
  • almost 4 years Renaming compiled artifact in package (feature)
  • almost 4 years ash-template doesn't have the addApp function like in bash template
  • almost 4 years Set entrypoint script exection bit when generating Dockerfile
  • almost 4 years docker:publishLocal does not override latest tag
  • almost 4 years Trouble using *daemonUser* and *daemonGroup* settings for RPM
  • almost 4 years Add "javaOptions in Docker" possibility for build.sbt
  • almost 4 years add rpmExplodedPackage command
  • almost 4 years Adding support for docker build args
  • almost 4 years Use a certified open source license
  • almost 4 years Disable symbolic link removal on update
  • about 4 years Evaluate LGTM service
  • about 4 years Could not find or load main class $JAVA_OPTS
  • about 4 years Creation of Debian package failed because of control directory permissions
  • about 4 years Publish build for sbt 1.0.0
  • about 4 years β€œToo many open files in system” exception when mapping a directory
  • about 4 years Feature request: Linux snap package support
  • about 4 years Docs do not accurately describe how to install plugin
  • about 4 years brp-java-repack-jars still running despite setting rpmBrpJavaRepackJars to false
  • about 4 years Files in Debian package do not respect default user.
  • about 4 years Mappings are not contained in JDKPackager bundles
  • about 4 years Adding shortcut via wixFeatures results in duplicated primary key in RemoveFile
  • about 4 years Incorrect namespace with WiX 4.x
sbt-native-packager open pull requests (View All Pulls)
  • Upstart: source /etc/default/${{app_name}}
  • Adding codacy coverage. coverage instrumentation doesn't compile?
  • Wip/windows service
  • FIX #750 remove outdated documentation
  • Fix an obvious typo
  • Make Docker plugin portable so that Windows is supported
  • Don't compress debian packages
  • Add systemd plugin. Idea on how to configure systemloaders
  • Fix #754 Add kill timeout to upstart. Add retryTimeout and retries keys
  • Use recommended path for systemd scripts
  • Add: dockerAdditionalVersions
  • maintainer file names were missing
  • Make daemonStdoutLogFile working on SystemV/Debian wheezy
  • V.1.1
  • Fix scoping in RPM plugin for #789
  • Adding 'dockerBuild{Command, Options}' and renaming 'dockerTag'
  • WIP 633 Add prototype for multiple apps in single project
  • added addApp and addJava to ash template like in bash template
  • [rpm] Fixes #894. Symlinks only removed during uninstall, not during update of RPM.
  • fix a bug in the ash-template
  • RpmNoReplaceplugin and LinuxMappingDSL for "noreplace" configs
  • undeprecate generateComponentsAndDirectoryXml in WixHelper
  • Treat symlinks as normal files in spec file
  • [rpm] Fix configWithNoReplace docs
  • Extending the testing matrix and adding docker
  • Treat symlinks as normal files in spec file
  • add maven metadata required by sonatype
  • Fixes issue #789 where brpJavaRepack was negated
  • Wip/remove symbolic operators
  • Implement stage command for rpm
  • Fix systemv logging
  • Add scoped resolvers to otherResolvers
  • Added support for Pre-Depends on DEB packages
  • Fix logging for SystemV packages
  • SBT 1.1.1
sbt-native-packager questions on Stackoverflow (View All Questions)
  • start/stop lifecycle of application with sbt-native-packager
  • Error while running sbt-native-packager debian package on ubuntu
  • sbt-native-packager specify external config file while preserving default typesafe config behavior
  • sbt-native-packager packaged project's dependency fails to find config value
  • sbt-native-packager installation target for RPMs
  • Change name in Debian package of sbt-native-packager
  • Change name in universal package of sbt-native-packager
  • Can sbt-native-packager generate multiple start scripts for one project?
  • Extending "universal" configuration in sbt-native-packager
  • Duplicate mappings for scala-library-2.10.3.jar with sbt-native-packager 0.7+
  • How do I fix error LGHT0094 when using SBT Native Packager?
  • How to make sbt-native-packager combine two layers of docker image
  • Duplicate mappings when building docker package using sbt-native-packager
  • Using external conf folder as resource folder with sbt-native-packager
  • What is the recommended way to set JVM options for the executables created with sbt-native-packager?
  • Intellij sbt sbt-native-packager and enablePlugins error
  • sbt native-packager RPM install directory issue
  • Customise Freedesktop file with sbt-native-packager and JDKPackager plugin
  • Extending sbt-native-packager (Docker)
  • Define java option in with sbt-native-packager
  • Add file to installation and windows support for sbt-native-packager 0.8
  • sbt-native-packager with docker output in Jenkins
  • SBT using sbt-native-packager how to create different build files?
  • Add timestamp to zip created by sbt-native-packager
  • Using sbt-aether-deploy with sbt-native-packager
  • Sbt Native Packager Debian installation uses root user instead of daemon user
  • How do I change ownership/attributes of a single file or single folder with sbt-native-packager for an RPM?
  • add sbt-web resources jar to classpath of sbt-native-packager
  • how to use sbt-native-packager JavaAppPackaging archtype for akka microkernel
  • sbt native packager doesn't create scripts under target/universal/stage/bin
sbt-native-packager list of languages used
sbt-native-packager latest release notes
v1.3.3 1.3.3 release

v1.3.3 (2018-02-03)

Full Changelog

Fixed bugs:

  • Break arguments with spaces in ash #1094
  • Documentation for specific version not published anymore #1087
  • Remove carriage return characters when loading configuration files. #1074
  • java.lang.NoClassDefFoundError: org/vafer/jdeb/Console #1053
  • Duplicated startup script names in universal zip #1016

Closed issues:

  • bashScriptConfigLocation config invalid #1076
  • Don't compress packages using the JDeb debian packager #1072
  • APP_CLASSPATH line growths too long in windows startup batch script #1071
  • Docker Errors on Load #1065
  • Doc and src packages for 1.3.2 not found in repo1.maven.org #1063
  • [Feature Request] Universal plugin, directory output format #1061
  • Remove redundant docker file #1060
  • Upstart init script does not source environment variables, nor does it pass environment variables on #1023
  • SystemV service template does not actually generate any logs #1021
  • Docs do not accurately describe how to install plugin #797
  • Adding a Code of Conduct #744

Merged pull requests:

v1.3.2 1.3.2 Release

This release contains some smaller fixes and changes to the project.

Project changes

  • All scripted tests are now executed during a pull request
  • The release doesn't perform any scripted tests as we rely on our CI
  • The release process is now completely self-contained. The changelog.md is automatically updated

v1.3.2 (2017-11-01)

Full Changelog

Fixed bugs:

  • when project version is a SNAPSHOT, rpm:packageBin fails with `version in Rpm` is empty. #1004

Closed issues:

  • question: are jar files compressed? #1046
  • Docker Image 'chown -R daemon:daemon' duplicates application layer #883
  • systemd service customization (open files) #728
  • Play pid is a big caveat for people starting using sbt-native-packager. #602
  • Evalualte circleci.com for docker intergation tests #497

Merged pull requests:

v1.3.1 Hotfix Release

v1.3.1 (2017-10-24)

Full Changelog

Closed issues:

  • Error running rpm:packageBin #1054
  • After upgrading to version 1.3.0, sbt started throwing docker: 'version --format '{{.Server.Version}}'' not a docker command warnings on console #1051

Merged pull requests:

Other projects in Scala