Haben Sie nicht auch schon mal ein geniales Tool geschrieben, das die tägliche Entwickler-Arbeit radikal vereinfacht? Dumm nur, dass genau dieses Programm sich nur über die IDE aufrufen lässt, in der es entwickelt wurde. Jetzt gilt es, eine meist riesenhafte Datei mit allen Abhängigkeiten, konfiguriertem Classpath und eine Startdatei zu erstellen. Ändert sich irgendwas, geht das Ganze Spielchen wieder von vorne los.
Der Entwickler von JLaunchPad hatte wohl ein ähnliches Problem. Und das, obwohl es mittlerweile Tools wie Maven gibt, die Abhängigkeiten verwalten und ein einfaches Verteilen von Software ermöglichen sollten. Die darauf folgende Überlegung ist einfach: Was wäre, wenn man ein Tool hätte, dass die benötigten Softwarekomponenten selbst herunter lädt, auf den Classpath legt und die Applikation startet? JLaunchPad bietet diese Funktionalität nun an, und bedient sich hierbei auch einiger Maven-Sourcen.
Installation und Konfiguration
Die Installation gestaltet sich relativ einfach, denn JLaunchPad nimmt alles mit, was es braucht. Entpacken Sie es nach dem Download einfach in ein temporäres Verzeichnis Ihrer Wahl und editieren Sie die Datei config.bat:
SET JAVA_HOME=C:\Programme\Java\jdk1.5.0_10
Es empfiehlt sich außerdem, im Vorfeld bereits die Werte für LAUNCHER_HOME und REPOSITORY_HOME zu setzen. Ersteres ist das gewünschte Zielverzeichnis Ihrer Programminstallation, letzteres deutet auf Ihr gewünschtes Repository (wobei es sich auch um ein Maven-Repository handeln kann):
SET LAUNCHER_HOME=C:\dev\tools\launcher
SET REPOSITORY_HOME=C:\dev\tools\maven-repository
Sobald dies geschehen ist, können Sie mit installer.bat einen grafischen Installer öffnen. Kontrollieren Sie hier noch mal die Einträge, ergänzen Sie bei Bedarf einen Proxy und drücken Sie „Install“. Der Installer kopiert die richtigen Dateien in Ihr Zielverzeichnis – fertig. In diesem können Sie bei Bedarf auch weitere Einstellungen vornehmen.
Eine eigene Launch-Datei SET MAIN_CLASS=de.grobmeier.test.App
SET PROPERTIES="-deps.file.name=%~dp0debs.xml" "-main.class.name=%MAIN_CLASS%" C:\dev\tools\launcher\launcher.bat %PROPERTIES% %*
Um nun eine eigene Anwendung zu verteilen, muss Sie zunächst in einem (Maven-)Repository installiert sein. Ist dies der Fall, kann man die Applikation mit nur zwei Dateien verteilen: ein Startskript und eine Datei mit der Definition der Abhängigkeiten. Zunächst das Startskript:
Mit diesem kleinen Skript geben wir die Main-Klasse an und zusätzlich spezifizieren wir die Datei mit den Abhängigkeiten – diese Informationen stecken wir dann in launcher.bat, welches dann den Rest der Arbeit für uns erledigen soll.
Das Format der Abhängigkeiten ist ebenso leicht erklärt: es handelt sich hierbei nämlich um ein abgespecktes Maven-POM, das Ihnen mit hoher Wahrscheinlichkeit schon bekannt sein dürfte. Mein POM sieht aus wie folgt und definiert lediglich eine Abhängigkeit zu Apache Commons Logging:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>de.grobmeier</groupId>
<artifactId>testapp</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>Test-App</name>
<description>...</description>
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
Wenn Sie nun Ihre Startdatei aufrufen, lädt JLaunchPad bei Bedarf die benötigten Abhängigkeiten in Ihr Repository, konfiguriert den Classpath und führt die angegebene Main-Klasse aus – in meinem Fall erscheint das allseits beliebte und bekannte « Hello World » auf der Konsole.
Christian Grobmeier
Links & Literatur
[1] http://jlaunchpad.sourceforge.net/
[2] http://scriptlandia.blogspot.com/
[3] http://maven.apache.org
























Kommentare