For Windows, the BeanMinder project builds a directory structure containing a .exe launcher, .lap control file and libraries directory, and archives it into a .zip file.
Note that the code of the application is in the BeanMinderCore module, and that the pom.xml shown here is from a separate BeanMinderCoreWindows module.
Here are the relevant sections of the pom.xml from that project:
... <dependencies> <dependency> <groupId>org.devzendo</groupId> <artifactId>BeanMinderCore</artifactId> <version>0.2.0-SNAPSHOT</version> </dependency> </dependencies> <build> <plugins> <!-- Create the Windows launcher structure under target/windows. --> <plugin> <groupId>org.devzendo</groupId> <artifactId>cross-platform-launcher-plugin</artifactId> <version>1.2.0</version> <configuration> <os>Windows</os> <applicationName>BeanMinder</applicationName> <mainClassName>org.devzendo.minimiser.MiniMiser</mainClassName> </configuration> <executions> <execution> <id>createlauncher</id> <phase>generate-resources</phase> <goals> <goal>createlauncher</goal> </goals> </execution> </executions> </plugin> <!-- Package the above launcher structure into a .zip archive --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>windows-launcher-distribution</descriptorRef> </descriptorRefs> </configuration> <dependencies> <dependency> <groupId>org.devzendo</groupId> <artifactId>cross-platform-launcher-plugin</artifactId> <version>1.1.0</version> </dependency> </dependencies> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>attached</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ...