diff --git a/pom.xml b/pom.xml
index 4830449..fda4dc1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -186,7 +186,28 @@
+
+
+ com.googlecode.maven-download-plugin
+ download-maven-plugin
+ 1.3.0
+
+
+ process-resources
+
+ wget
+
+
+ https://raw.githubusercontent.com/tofi86/universalJavaApplicationStub/master/src/universalJavaApplicationStub
+ ${project.build.directory}/resources
+
+ universalJavaApplicationStub.sh
+
+
+
+
+
maven-antrun-plugin
1.7
@@ -199,10 +220,10 @@
-
+
+
diff --git a/src/resources/universalJavaApplicationStub.sh b/src/resources/universalJavaApplicationStub.sh
deleted file mode 100755
index 3893194..0000000
--- a/src/resources/universalJavaApplicationStub.sh
+++ /dev/null
@@ -1,397 +0,0 @@
-#!/bin/sh
-##################################################################################
-# #
-# universalJavaApplicationStub #
-# #
-# #
-# A shellscript JavaApplicationStub for Java Apps on Mac OS X #
-# that works with both Apple's and Oracle's plist format. #
-# #
-# Inspired by Ian Roberts stackoverflow answer #
-# at http://stackoverflow.com/a/17546508/1128689 #
-# #
-# #
-# @author Tobias Fischer #
-# @url https://github.com/tofi86/universalJavaApplicationStub #
-# @date 2015-11-02 #
-# @version 1.0.1 #
-# #
-# #
-##################################################################################
-# #
-# #
-# The MIT License (MIT) #
-# #
-# Copyright (c) 2015 Tobias Fischer #
-# #
-# Permission is hereby granted, free of charge, to any person obtaining a copy #
-# of this software and associated documentation files (the "Software"), to deal #
-# in the Software without restriction, including without limitation the rights #
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell #
-# copies of the Software, and to permit persons to whom the Software is #
-# furnished to do so, subject to the following conditions: #
-# #
-# The above copyright notice and this permission notice shall be included in all #
-# copies or substantial portions of the Software. #
-# #
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE #
-# SOFTWARE. #
-# #
-##################################################################################
-
-
-
-
-#
-# resolve symlinks
-############################################
-
-PRG=$0
-
-while [ -h "$PRG" ]; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null`
- if expr "$link" : '^/' 2> /dev/null >/dev/null; then
- PRG="$link"
- else
- PRG="`dirname "$PRG"`/$link"
- fi
-done
-
-# set the directory abspath of the current shell script
-PROGDIR=`dirname "$PRG"`
-
-
-
-
-#
-# set files and folders
-############################################
-
-# the absolute path of the app package
-cd "$PROGDIR"/../../
-AppPackageFolder=`pwd`
-
-# the base path of the app package
-cd ..
-AppPackageRoot=`pwd`
-
-# set Apple's Java folder
-AppleJavaFolder="${AppPackageFolder}"/Contents/Resources/Java
-
-# set Apple's Resources folder
-AppleResourcesFolder="${AppPackageFolder}"/Contents/Resources
-
-# set Oracle's Java folder
-OracleJavaFolder="${AppPackageFolder}"/Contents/Java
-
-# set Oracle's Resources folder
-OracleResourcesFolder="${AppPackageFolder}"/Contents/Resources
-
-# set path to Info.plist in bundle
-InfoPlistFile="${AppPackageFolder}"/Contents/Info.plist
-
-# set the default JVM Version to a null string
-JVMVersion=""
-
-
-
-
-#
-# read Info.plist and extract JVM options
-############################################
-
-# read the program name from CFBundleName
-CFBundleName=`/usr/libexec/PlistBuddy -c "print :CFBundleName" "${InfoPlistFile}"`
-
-# read the icon file name
-CFBundleIconFile=`/usr/libexec/PlistBuddy -c "print :CFBundleIconFile" "${InfoPlistFile}"`
-
-
-# check Info.plist for Apple style Java keys -> if key :Java is present, parse in apple mode
-/usr/libexec/PlistBuddy -c "print :Java" "${InfoPlistFile}" > /dev/null 2>&1
-exitcode=$?
-JavaKey=":Java"
-
-# if no :Java key is present, check Info.plist for universalJavaApplication style JavaX keys -> if key :JavaX is present, parse in apple mode
-if [ $exitcode -ne 0 ]; then
- /usr/libexec/PlistBuddy -c "print :JavaX" "${InfoPlistFile}" > /dev/null 2>&1
- exitcode=$?
- JavaKey=":JavaX"
-fi
-
-
-# read Info.plist in Apple style if exit code returns 0 (true, :Java key is present)
-if [ $exitcode -eq 0 ]; then
-
- # set Java and Resources folder
- JavaFolder="${AppleJavaFolder}"
- ResourcesFolder="${AppleResourcesFolder}"
-
- APP_PACKAGE="${AppPackageFolder}"
- JAVAROOT="${AppleJavaFolder}"
- USER_HOME="$HOME"
-
-
- # read the Java WorkingDirectory
- JVMWorkDir=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:WorkingDirectory" "${InfoPlistFile}" 2> /dev/null | xargs`
-
- # set Working Directory based upon Plist info
- if [[ ! -z ${JVMWorkDir} ]]; then
- WorkingDirectory="${JVMWorkDir}"
- else
- # AppPackageRoot is the standard WorkingDirectory when the script is started
- WorkingDirectory="${AppPackageRoot}"
- fi
-
- # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME
- WorkingDirectory=`eval "echo ${WorkingDirectory}"`
-
-
- # read the MainClass name
- JVMMainClass=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:MainClass" "${InfoPlistFile}" 2> /dev/null`
-
- # read the SplashFile name
- JVMSplashFile=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:SplashFile" "${InfoPlistFile}" 2> /dev/null`
-
- # read the JVM Options
- JVMOptions=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:Properties" "${InfoPlistFile}" 2> /dev/null | grep " =" | sed 's/^ */-D/g' | tr '\n' ' ' | sed 's/ */ /g' | sed 's/ = /=/g' | xargs`
- # replace occurences of $APP_ROOT with its content
- JVMOptions=`eval "echo ${JVMOptions}"`
-
- # read StartOnMainThread
- JVMStartOnMainThread=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:StartOnMainThread" "${InfoPlistFile}" 2> /dev/null`
- if [ "${JVMStartOnMainThread}" == "true" ]; then
- JVMOptions+=" -XstartOnFirstThread"
- fi
-
- # read the ClassPath in either Array or String style
- JVMClassPath_RAW=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:ClassPath" "${InfoPlistFile}" 2> /dev/null`
- if [[ $JVMClassPath_RAW == *Array* ]] ; then
- JVMClassPath=.`/usr/libexec/PlistBuddy -c "print ${JavaKey}:ClassPath" "${InfoPlistFile}" 2> /dev/null | grep " " | sed 's/^ */:/g' | tr -d '\n' | xargs`
- else
- JVMClassPath=${JVMClassPath_RAW}
- fi
- # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME
- JVMClassPath=`eval "echo ${JVMClassPath}"`
-
- # read the JVM Default Options
- JVMDefaultOptions=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:VMOptions" "${InfoPlistFile}" 2> /dev/null | xargs`
-
- # read the JVM Arguments
- JVMArguments=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:Arguments" "${InfoPlistFile}" 2> /dev/null | xargs`
- # replace occurences of $APP_ROOT with its content
- JVMArguments=`eval "echo ${JVMArguments}"`
-
- # read the Java version we want to find
- JVMVersion=`/usr/libexec/PlistBuddy -c "print ${JavaKey}:JVMVersion" "${InfoPlistFile}" 2> /dev/null | xargs`
-
-# read Info.plist in Oracle style
-else
-
- # set Working Directory and Java and Resources folder
- JavaFolder="${OracleJavaFolder}"
- ResourcesFolder="${OracleResourcesFolder}"
- WorkingDirectory="${OracleJavaFolder}"
-
- APP_ROOT="${AppPackageFolder}"
-
- # read the MainClass name
- JVMMainClass=`/usr/libexec/PlistBuddy -c "print :JVMMainClassName" "${InfoPlistFile}" 2> /dev/null`
-
- # read the SplashFile name
- JVMSplashFile=`/usr/libexec/PlistBuddy -c "print :JVMSplashFile" "${InfoPlistFile}" 2> /dev/null`
-
- # read the JVM Options
- JVMOptions=`/usr/libexec/PlistBuddy -c "print :JVMOptions" "${InfoPlistFile}" 2> /dev/null | grep " -" | tr -d '\n' | sed 's/ */ /g' | xargs`
- # replace occurences of $APP_ROOT with its content
- JVMOptions=`eval "echo ${JVMOptions}"`
-
- # read the ClassPath in either Array or String style
- JVMClassPath_RAW=`/usr/libexec/PlistBuddy -c "print JVMClassPath" "${InfoPlistFile}" 2> /dev/null`
- if [[ $JVMClassPath_RAW == *Array* ]] ; then
- JVMClassPath=.`/usr/libexec/PlistBuddy -c "print JVMClassPath" "${InfoPlistFile}" 2> /dev/null | grep " " | sed 's/^ */:/g' | tr -d '\n' | xargs`
- elif [[ ! -z ${JVMClassPath_RAW} ]] ; then
- JVMClassPath=${JVMClassPath_RAW}
- else
- #default: fallback to OracleJavaFolder
- JVMClassPath="${JavaFolder}/*"
- fi
- # expand variables $APP_PACKAGE, $JAVAROOT, $USER_HOME
- JVMClassPath=`eval "echo ${JVMClassPath}"`
-
- # read the JVM Default Options
- JVMDefaultOptions=`/usr/libexec/PlistBuddy -c "print :JVMDefaultOptions" "${InfoPlistFile}" 2> /dev/null | grep -o " \-.*" | tr -d '\n' | xargs`
-
- # read the JVM Arguments
- JVMArguments=`/usr/libexec/PlistBuddy -c "print :JVMArguments" "${InfoPlistFile}" 2> /dev/null | tr -d '\n' | sed -E 's/Array \{ *(.*) *\}/\1/g' | sed 's/ */ /g' | xargs`
- # replace occurences of $APP_ROOT with its content
- JVMArguments=`eval "echo ${JVMArguments}"`
-fi
-
-
-
-
-#
-# function: Java version tester
-############################################
-
-function JavaVersionSatisfiesRequirement() {
- java_ver=$1
- java_req=$2
-
- # e.g. 1.8*
- if [[ ${java_req} =~ ^[0-9]\.[0-9]\*$ ]] ; then
- java_req_num=${java_req:0:3}
- java_ver_num=${java_ver:0:3}
- if [ ${java_ver_num} == ${java_req_num} ] ; then
- return 0
- else
- return 1
- fi
-
- # e.g. 1.8+
- elif [[ ${java_req} =~ ^[0-9]\.[0-9]\+$ ]] ; then
- java_req_num=`echo ${java_req} | sed -E 's/[[:punct:]]//g'`
- java_ver_num=`echo ${java_ver} | sed -E 's/[[:punct:]]//g'`
- if [ ${java_ver_num} -ge ${java_req_num} ] ; then
- return 0
- else
- return 1
- fi
-
- # e.g. 1.8
- elif [[ ${java_req} =~ ^[0-9]\.[0-9]$ ]] ; then
- if [ ${java_ver} == ${java_req} ] ; then
- return 0
- else
- return 1
- fi
-
- # not matching any of the above patterns
- else
- return 2
- fi
-}
-
-
-#
-# function: extract Java major version
-# from java -version command
-############################################
-
-function extractJavaMajorVersion() {
- echo `"$1" -version 2>&1 | awk '/version/{print $NF}' | sed -E 's/"([0-9.]{3})[0-9_.]{5}"/\1/g'`
-}
-
-
-
-#
-# find installed Java versions
-############################################
-
-apple_jre_plugin="/Library/Java/Home/bin/java"
-apple_jre_version=`extractJavaMajorVersion "${apple_jre_plugin}"`
-oracle_jre_plugin="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java"
-oracle_jre_version=`extractJavaMajorVersion "${oracle_jre_plugin}"`
-
-# first check system variable "$JAVA_HOME"
-if [ -n "$JAVA_HOME" ] ; then
- JAVACMD="$JAVA_HOME/bin/java"
-
-# check for JVMversion requirements
-elif [ ! -z ${JVMVersion} ] ; then
-
- # first in "/usr/libexec/java_home" symlinks
- if [ -x /usr/libexec/java_home ] && /usr/libexec/java_home -F -v ${JVMVersion} > /dev/null ; then
- JAVACMD="`/usr/libexec/java_home -F -v ${JVMVersion} 2> /dev/null`/bin/java"
-
- # then in Oracle JRE plugin
- elif [ -x "${oracle_jre_plugin}" ] && JavaVersionSatisfiesRequirement ${oracle_jre_version} ${JVMVersion} ; then
- JAVACMD="${oracle_jre_plugin}"
-
- # then in Apple JRE plugin
- elif [ -x "${apple_jre_plugin}" ] && JavaVersionSatisfiesRequirement ${apple_jre_version} ${JVMVersion} ; then
- JAVACMD="${apple_jre_plugin}"
-
- else
- # display error message with applescript
- osascript -e "tell application \"System Events\" to display dialog \"ERROR launching '${CFBundleName}'\n\nNo suitable Java version found on your system!\nThis program requires Java ${JVMVersion}\nMake sure you install the required Java version.\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1 with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)"
- # exit with error
- exit 3
- fi
-
-# otherwise check "/usr/libexec/java_home" symlinks
-elif [ -x /usr/libexec/java_home ] && /usr/libexec/java_home -F > /dev/null; then
- JAVACMD="`/usr/libexec/java_home 2> /dev/null`/bin/java"
-
-# otherwise check Java standard symlink (old Apple JRE)
-elif [ -h /Library/Java/Home ]; then
- JAVACMD="${apple_jre_plugin}"
-
-# fallback: public JRE plugin (Oracle Java)
-else
- JAVACMD="${oracle_jre_plugin}"
-fi
-
-# fallback fallback: /usr/bin/java
-# but this would prompt to install deprecated Apple Java 6
-
-
-
-
-#
-# execute JAVA commandline and do some pre-checks
-####################################################
-
-# display error message if MainClassName is empty
-if [ -z ${JVMMainClass} ]; then
- # display error message with applescript
- osascript -e "tell application \"System Events\" to display dialog \"ERROR launching '${CFBundleName}'!\n\n'MainClass' isn't specified!\nJava application cannot be started!\" with title \"${CFBundleName}\" buttons {\" OK \"} default button 1 with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)"
- # exit with error
- exit 2
-
-
-# check whether $JAVACMD is a file and executable
-elif [ -f "$JAVACMD" ] && [ -x "$JAVACMD" ] ; then
-
- # enable drag&drop to the dock icon
- export CFProcessPath="$0"
-
- # change to Working Directory based upon Apple/Oracle Plist info
- cd "${WorkingDirectory}"
-
- # execute Java and set
- # - classpath
- # - dock icon
- # - application name
- # - JVM options
- # - JVM default options
- # - main class
- # - JVM arguments
- exec "$JAVACMD" \
- -cp "${JVMClassPath}" \
- -splash:"${ResourcesFolder}/${JVMSplashFile}" \
- -Xdock:icon="${ResourcesFolder}/${CFBundleIconFile}" \
- -Xdock:name="${CFBundleName}" \
- ${JVMOptions:+$JVMOptions }\
- ${JVMDefaultOptions:+$JVMDefaultOptions }\
- ${JVMMainClass}\
- ${JVMArguments:+ $JVMArguments}
-
-
-else
-
- # display error message with applescript
- osascript -e "tell application \"System Events\" to display dialog \"ERROR launching '${CFBundleName}'!\n\nYou need to have JAVA installed on your Mac!\nVisit java.com for installation instructions...\" with title \"${CFBundleName}\" buttons {\"Later\", \"Visit java.com\"} default button \"Visit java.com\" with icon path to resource \"${CFBundleIconFile}\" in bundle (path to me)" \
- -e "set response to button returned of the result" \
- -e "if response is \"Visit java.com\" then open location \"http://java.com\""
-
- # exit with error
- exit 1
-fi