Binary

Distributions of this type provide a platform specific native binary, as a consequence you must specify a platform value for each one of their artifacts.

Distributions of this type conform to the following file structure:

.
├── LICENSE
├── README
└── bin
    └── executable

Creating a Distribution

You can use any tool/language at your disposal to create a distribution of this type as long as the file structure is followed and the final artifact packaged as a Zip or Tar file. The archive must contain a root entry, typically following the name of the archive, thus if the archive is named app-1.2.3.zip the root entry should be app-1.2.3.

Alternatively, you may also configure an Archive assembler to create an archive.

Packager Support

Packager Supported

AppImage

Asdf

Chocolatey

Docker

Flatpak

Homebrew

JBang

Macports

Scoop

Sdkman

Snap

Spec

Sdkman is only supported if the executable is originally Java based and has been transformed using GraalVM Native Image. You must add an extraProperty named graalVMNativeImage to the artifact.

Universal Binaries

Binary distributions are expected to deliver platform specific binaries thus every artifact must have a value set for their respective platform property. However, it’s possible to skip validating this setting by defining an extra property named universal, like it’s shown in the following snippet:

distributions:
  app:
    type: BINARY
    artifacts:
      - path: target/distributions/{{distributionName}}/{{distributionName}}-{{projectVersion}}.zip
        extraProperties:
            universal: true

GraalVM Native Image

Native image binaries can be created in many ways. Frameworks such as Micronaut, Quarkus, and Helidon provide Maven and Gradle plugins that can create such binaries. The distribution should be packages as a Zip or Tar. The archive must contain a root entry, typically following the name of the archive, thus if the archive is named app-1.2.3.zip the root entry should be app-1.2.3.

Maven
Gradle

Alternatively, you may also configure a Native Image assembler.

distributions:
  myNativeImageApp:
    type: BINARY
    artifacts:
      - path: target/distributions/{{distributionName}}/{{distributionName}}-{{projectVersion}}.zip
        platform: 'linux-x86_64'
        extraProperties:
            graalVMNativeImage: true