For Mac OS X, the BeanMinder project builds a .app launcher structure, and archives it into a .tar.gz file.
The plugin can also be configured to create a launcher shell script, and libraries directory, then archives this into a .tar.gz file. This example will be shown later.
Note that the code of the application is in the BeanMinderCore module, and that the pom.xml shown here is from a separate BeanMinderCoreOSX module.
Here are the relevant sections of the pom.xml from that module:
...
<dependencies>
<dependency>
<groupId>org.devzendo</groupId>
<artifactId>BeanMinderCore</artifactId>
<version>0.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.devzendo</groupId>
<artifactId>libquaqua</artifactId>
<type>zip</type>
<version>9.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Create the Mac OS X BeanMinder.app launcher structure under
target/macosx. -->
<plugin>
<groupId>org.devzendo</groupId>
<artifactId>cross-platform-launcher-plugin</artifactId>
<version>1.1.1</version>
<configuration>
<os>MacOSX</os>
<applicationName>BeanMinder</applicationName>
<mainClassName>org.devzendo.minimiser.MiniMiser</mainClassName>
<iconsFileName>BeanMinder.icns</iconsFileName>
<bundleSignature>BM</bundleSignature>
<stubType>Universal</stubType>
</configuration>
<executions>
<execution>
<id>createlauncher</id>
<phase>generate-resources</phase>
<goals>
<goal>createlauncher</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Copy the Quaqua native libraries into the correct location in
the Mac OS X launcher structure created above. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-dependencies</id>
<phase>package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.devzendo</groupId>
<artifactId>libquaqua</artifactId>
<version>9.1</version>
<type>zip</type>
<overWrite>true</overWrite>
<includes>*</includes>
<outputDirectory>${project.build.directory}/macosx/BeanMinder.app/Contents/Resources/Java/lib</outputDirectory>
</artifactItem>
</artifactItems>
<!-- other configurations here -->
</configuration>
</execution>
</executions>
</plugin>
<!-- Package up the above .app structure into a .tar.gz archive -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>macosx-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>
...The plugin can also be configured to create a launcher shell script, and libraries directory, then archives this into a .tar.gz file.
Here are the relevant sections of the pom.xml from that project; note that this project is somewhat complicated by its use of JNI (nar) artifacts:
...
<properties>
<appName>ArchivectCmd</appName>
</properties>
<profiles>
<profile>
<id>mac os x</id>
<activation>
<os>
<name>mac os x</name>
</os>
</activation>
<build>
<plugins>
<!--
Create the Mac OS X Archivect command launcher structure under
target/macosx.
-->
<plugin>
<groupId>org.devzendo</groupId>
<artifactId>cross-platform-launcher-plugin</artifactId>
<version>1.1.0</version>
<configuration>
<os>MacOSX</os>
<launcherType>Console</launcherType>
<applicationName>${appName}</applicationName>
<mainClassName>org.devzendo.archivect.ArchivectMain</mainClassName>
<narClassifierTypes>
<param>x86_64-MacOSX-g++:jni</param>
</narClassifierTypes>
<!--
I don't have an assigned creator code
<bundleSignature>BM</bundleSignature>
-->
</configuration>
<executions>
<execution>
<id>createlauncher</id>
<phase>package</phase>
<goals>
<goal>createlauncher</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile> <!-- mac os x -->
</profiles>
<dependencies>
<dependency>
<groupId>org.devzendo</groupId>
<artifactId>ArchivectCommand</artifactId>
<version>0.1.0-SNAPSHOT</version>
<type>nar</type>
</dependency>
</dependencies>
...