Writing good end to end portable applications in Java has always been a pain because of the missing OS abstractions. The main goal of the Appassembler Maven plug-in is to try to remove some of this pain through an application descriptor and a set of Maven Mojos.
To get started using the plug-in for generating a runtime, see the Maven plugin documentation