UPDATE: The approach shown below is now out of date. Here’s a link to the solution for packaging Java 14+ apps on macOS.
I was going to write a little tutorial on how to use the Jar Bundler Ant task for Mac OS X, but I don't have the time to do that right now.
So, I'll just share my Mac OS X Java Ant build script, which includes the JarBundler task. You should be able to use this Ant build script to build a Java application so it appears to the user to be a native Mac OS X application, even though it's really a Java application under the covers.
<project name="WikiTeX" default="do_bundle" basedir=".."> <taskdef name="jarbundler" classname="net.sourceforge.jarbundler.JarBundler" /> <path id="class.path"> <fileset dir="lib"> <include name="**/*.jar"/> <include name="**/*.zip"/> </fileset> </path> <target name="init"> <tstamp/> </target> <target name="create_classes_dir" depends="init"> <mkdir dir="classes"/> </target> <target name="clean"> <delete dir="classes"/> </target> <target name="compile" depends="clean,create_classes_dir"> <javac destdir="classes" source="1.5" > <src path="src"/> <exclude name="**/_*.java"/> <classpath refid="class.path"/> </javac> <copy todir="classes"> <fileset dir="src"> <include name="**/*.gif"/> <include name="**/*.jpg"/> </fileset> </copy> </target> <!-- MAKE_JAR TARGET --> <target name="create_jar" depends="compile"> <copy todir="classes/com/devdaily/opensource/jelly/view"> <fileset dir="helpfiles"> <include name="**/*.*"/> </fileset> </copy> <jar basedir="classes" jarfile="jar/wikitex.jar" manifest="build/rgadoc.manifest"/> <copy todir="jar"> <fileset dir="lib"> <include name="**/*.jar"/> <include name="**/*.zip"/> </fileset> </copy> </target> <target name="do_bundle" depends="create_jar"> <!-- create a jar bundle for the mac --> <jarbundler dir="release" name="MyEditor" shortname="MyEditor" signature="Al Alexander" mainclass="com.devdaily.opensource.jelly.Main" icon="build/wikitex.icns" jvmversion="1.5+" version="0.92" infostring="WikiTeX, v0.92, September 2007" build="2190" bundleid="com.devdaily.opensource.jelly.Main" > <jarfileset dir="jar"> <include name="**/*.jar" /> <exclude name="**/CVS" /> </jarfileset> <javaproperty name="apple.laf.useScreenMenuBar" value="true"/> <javaproperty name="apple.awt.brushMetal" value="true"/> <javaproperty name="apple.awt.showGrowBox" value="false"/> <javaproperty name="com.apple.mrj.application.apple.menu.about.name" value="WikiTeX"/> <javaproperty name="apple.awt.textantialiasing" value="true"/> </jarbundler> </target> </project>
One important note is that this Ant build script uses the Mac OS X JarBundler task. That is a separate task that you need to download so you can use this build script (or something like this build script).
Another thing to mention is that this script sets a number of Java properties within the jarbundler
task, and all of these properties are Apple/Mac-specific. I've described these properties in other blog posts and tutorials, so if you'll search my site you should be able to find those.