Veröffentlicht am: 25.02.2012
Aktualisiert am: 28.05.2023
Von: JLusiardi
In Kategorie: Programmieren
Im 5ten Teil der Serie über Maven (Teil 1, Teil 2, Teil 3, Teil 4) - Teil 4 wird für diesen Teil allerdings nicht benötigt, kann also überlesen werden) soll gezeigt werden, wie wiederum Maven genutzt werden kann, um automatisiert im Build-Prozess direkt ausführbare Dateien für Windows (exe) erzeugt werden können.
Launch4j
Launch4j ist ein plattform-übergreifendes Werkzeug zur Erstellung von ausführbaren EXE-Dateien für Windows. Für einmale Aktionen und zum Üben bietet Launch4j eine GUI an, diese eignet sich aber nicht zur Integration in einen Build-Prozess. Hier kann uns Maven wieder helfen.
Erweiterung der pom.xml
Zunächst muss ein (zusätzliches) pluginRepository eingebunden werden. Das Tag pluginRepositories wird nur benötigt, wenn es noch nicht vorhanden war.
<pluginRepositories>
<pluginRepository>
<id>launch4j-xml-plugin-repo</id>
<name>launch4j-xml-plugin Repository for Maven</name>
<url>
https://launch4j-xml-plugin.googlecode.com/svn/repo
</url>
</pluginRepository>
</pluginRepositories>
Anschließend wird wie in Teil 3 der Build-Prozess angepasst. Dazu wird unter /project/build/plugins (dem XPath folgen) folgendes zusätzliche Plugin eingetragen. Es wird davon ausgegangen, dass
- ein ausführbares JAR-File vorliegt
- und dieses muss unter plugin/executions/execution/configuration/jar (XPath) angegeben werden
Die gewünschte Ergebnisdatei wird unter plugin/executions/execution/configuration/outfile (XPath) angegeben.
<plugin>
<groupId>org.bluestemsoftware.open.maven.plugin</groupId>
<artifactId>launch4j-plugin</artifactId>
<version>1.5.0.0</version>
<executions>
<execution>
<id>l4j-gui</id>
<phase>package</phase>
<goals>
<goal>launch4j</goal>
</goals>
<configuration>
<headerType>gui</headerType>
<outfile>target/MouseMover.exe</outfile>
<jar>target/MouseMover-0.0.1.jar</jar>
<errTitle>MouseMover Error</errTitle>
<icon>src/main/resources/mm.ico</icon>
<jre>
<minVersion>1.5.0</minVersion>
<maxVersion>1.6.0</maxVersion>
<initialHeapSize>128</initialHeapSize>
<maxHeapSize>1024</maxHeapSize>
</jre>
<versionInfo>
<fileVersion>1.0</fileVersion>
<txtFileVersion>1.0</txtFileVersion>
<fileDescription>Desc</fileDescription>
<copyright>C</copyright>
<productVersion>1.0</productVersion>
<txtProductVersion>1.0</txtProductVersion>
<productName>MouseMover</productName>
<internalName>MouseMover</internalName>
<originalFilename>
MouseMover.exe
</originalFilename>
</versionInfo>
</configuration>
</execution>
</executions>
</plugin>
Nach dem nächsten Build steht euch dann an der angegebenen Stelle eine EXE (hier MouseMover.exe) zur Verfügung. Das klappt zum Glück nicht nur unter Windows, sondern auch unter Linux und Mac OS X. Aber das war auch auf der Homepage von Launch4j so angegeben.
Résumé
Launch4j ermöglicht in Verbindung mit Maven das Erstellen von EXE-Dateien ohne große Probleme. So kommen Windows-Nutzer in den Genuss direkt ausführbarer Java-Programme.
Update 6. Juni 2018
Die Quellen zu diesem Artikel findet man jetzt unter https://gitea.lusiardi.de/jlusiardi/MouseMover. Leider scheint der Build aktuell nicht möglich.
Update 28. Mai 2023
Wie in den vorangegangen Teilen wurden auch hier Updates verschiedener Versionen vorgenommen. Dadurch ist der Build wieder möglich und das Projekt funktioniert auch unter Windows 10.