Skip to content

Latest commit

 

History

History
96 lines (64 loc) · 3.15 KB

File metadata and controls

96 lines (64 loc) · 3.15 KB

Java Server Application Archetype

Hint

Supports only deb and rpm packaging. No support for Windows or macOS

In the java-app-plugin section we described how to build and customize settings related to an application. The server archetype adds additional features you may need when running your application as a service on a server. SBT Native Packager ships with a set of predefined install and uninstall scripts for various platforms and service managers.

Features

The JavaServerAppPackaging archetype depends on the java-app-plugin and adds the following features

  • daemon user/group support
  • default mappings for server applications
    • /var/log/<pkg> is symlinked from <install>/logs
    • /var/run/<pkg> owned by daemonUser
  • etc-default support

Usage

enablePlugins(JavaServerAppPackaging)

Everything else works the same way as the java-app-plugin.

Tip

If you want your application to be registered as a service enable a systemloaders plugin.

Settings & Tasks

This is a non extensive list of important settings and tasks this plugin provides. All settings have sensible defaults.

daemonUser

User to start application daemon

daemonUserUid

UID of daemonUser

daemonGroup

Group to place daemonUser to

daemonGroupGid

GID of daemonGroup

daemonShell

Shell provided for the daemon user

daemonStdoutLogFile

Filename stdout/stderr of application daemon. Now it's supported only in SystemV

Default Mappings

The java server archetype creates a default package structure with the following access rights. <package> is a placeholder for your actual application name. By default this is normalizedName.

Folder User Permissions Purpose
/usr/share/<package> root 755 / (655) static, non-changeable files
/etc/default/<package> root 644 default config file
/etc/<package> root 644 config folder -> link to /usr/share/<package-name>/conf
/var/run/<package> daemon 644 if the application generates a pid on its own
/var/log/<package> daemon 644 log folder -> symlinked from /usr/share/<package>/log

You can read more on best practices on wikipedia filesystem hierarchy, debian policies and in this native packager discussion.

If you want to change something in this predefined structure read more about it in the linux section </formats/linux>.

Customize

customize.rst