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.
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
.
You must an extra property named graalVMNativeImage to the distribution.
|
-
maven-assembly-plugin: packages the distribution as a Zip.
-
distribution plugin: packages a distribution as a Zip.
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