Packaging FormatsΒΆ

There is a plugin for each packaging format that native-packager supports. These plugins can rely on each other to reuse existing functionality. Currently the autoplugin hierarchy looks like this

          SbtNativePackager
                +
                |
                |
  +-------+  Universal  +--------+-------------+----------------+
  |             +                |             |                |
  |             |                |             |                |
  |             |                |             |                |
  +             +                +             +                +
Docker    +-+ Linux +-+       Windows     JDKPackager   GraalVM native-image
          |           |
          |           |
          +           +
        Debian       RPM

If you enable the DebianPlugin all plugins that depend on the DebianPlugin will be enabled as well (LinuxPlugin, UniversalPlugin and SbtNativePackager).

Each packaging format defines its own scope for settings and tasks, so you can customize your build on a packaging level. The settings and tasks must be explicitly inherited. For the mappings task this looks like this

Docker / mappings := (Universal / mappings).value

To learn more about a specific plugin, read the appropriate doc.

Tip

You may also need to read the docs of the dependent plugins. We recommend always that you read the Universal Plugin documentation because all plugins rely on this one.