This is a short documentation on building Debian packages in Java.
For Eclipse SCADA we want to provide easily installable Debian (deb) and RPM packaged that can be installed using the local systems platform packaging system.
These packages are normally created by providing a set of sources, a ruleset on how to compile these and a script on how to package. For Debian this is the source folder/archive and an "debian" directory which contains the control files (make rules, installation rules). For RPM this is the "spec" file.
In Eclipse SCADA however we build everything using Maven/Tycho and already have the result artifacts, which we simply want to "copy" to the target system in an user friendly way. Therefore we simply re-package the artifacts we produce using Maven/Tycho into a deb/rpm package.
This is NOT the way the package managers intended to use the whole system. Because the idea is, that the process of creating a package also produces a "source package". Which contains all the source that can be re-compiled/re-built without the need to have the original "assembling" system.
For example, you have some software that is compiled and then copied to some directories in order to install it. The source package would then contain all the source and references needed to compile the binary package. So at some point somebody creates the source package, which creates the binary package, which can be installed.
Since we already have the binaries created using a separate way, we can only package the binary package and will not produce any source package.
For packaging our stuff we use jdeb, which is both a Java library for creating .deb files and also provides a Maven and Ant task.
Creating the binary package file itself is not enough. The user wants to have some system to download it using its local repository manager. On debian this is normally "apt". On Redhat it is "yum", on Suse "zypper" (which in fact uses the "yum" style repositories).
Apt repositories can be compared to Maven repositories. They are a combination of metadata files and a specific layout were the .deb files are placed.