| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| |
| --> |
| <!-- |
| *** GENERATED FROM TEMPLATE - DO NOT EDIT *** |
| *** EDIT ../build.xml INSTEAD *** |
| --> |
| |
| <project name="jfx-impl" default="jfx-deployment" basedir=".." xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:fx="javafx:com.sun.javafx.tools.ant"> |
| <description>JavaFX-specific Ant calls</description> |
| |
| <target name="-check-javafx"> |
| <echo message="javafx.runtime = ${javafx.runtime}" level="verbose"/> |
| <echo message="javafx.sdk = ${javafx.sdk}" level="verbose"/> |
| <condition property="javafx.runtime.defined"> |
| <and> |
| <isset property="javafx.runtime"/> |
| <not><contains string="${javafx.runtime}" substring="$${platform" casesensitive="false"/></not> |
| </and> |
| </condition> |
| <condition property="javafx.sdk.defined"> |
| <and> |
| <isset property="javafx.sdk"/> |
| <not><contains string="${javafx.sdk}" substring="$${platform" casesensitive="false"/></not> |
| </and> |
| </condition> |
| <condition property="javafx.platform.defined"> |
| <and> |
| <isset property="javafx.runtime.defined"/> |
| <isset property="javafx.sdk.defined"/> |
| </and> |
| </condition> |
| </target> |
| |
| <target name="-javafx-missing-platform" depends="-check-javafx" unless="javafx.platform.defined"> |
| <condition property="javafx.sdk.missing+default"> |
| <and> |
| <equals arg1="${platform.active}" arg2="Default_JavaFX_Platform" trim="true"/> |
| <not><isset property="javafx.sdk.defined"/></not> |
| </and> |
| </condition> |
| <condition property="javafx.sdk.missing-default"> |
| <and> |
| <not><equals arg1="${platform.active}" arg2="Default_JavaFX_Platform" trim="true"/></not> |
| <not><isset property="javafx.sdk.defined"/></not> |
| </and> |
| </condition> |
| <condition property="javafx.runtime.missing+default"> |
| <and> |
| <equals arg1="${platform.active}" arg2="Default_JavaFX_Platform" trim="true"/> |
| <not><isset property="javafx.runtime.defined"/></not> |
| </and> |
| </condition> |
| <condition property="javafx.runtime.missing-default"> |
| <and> |
| <not><equals arg1="${platform.active}" arg2="Default_JavaFX_Platform" trim="true"/></not> |
| <not><isset property="javafx.runtime.defined"/></not> |
| </and> |
| </condition> |
| </target> |
| |
| <target name="-javafx-check-error" depends="-check-javafx, -javafx-missing-platform" unless="javafx.platform.defined"> |
| <fail message="Platform definition problem.${line.separator}JavaFX SDK path undefined. Check the definition of ${platform.active} in Java Platform Manager${line.separator}(or directly the properties platform.active and javafx.sdk in project.properties file).${line.separator}Note: If missing, the default JavaFX-enabled platform gets created automatically when creating a new FX Project." if="javafx.sdk.missing+default"/> |
| <fail message="Platform definition problem.${line.separator}JavaFX SDK path undefined. Check the definition of ${platform.active} in Java Platform Manager${line.separator}(or directly the properties platform.active and javafx.sdk in project.properties file)." if="javafx.sdk.missing-default"/> |
| <fail message="Platform definition problem.${line.separator}JavaFX RT path undefined. Check the definition of ${platform.active} in Java Platform Manager${line.separator}(or directly the properties platform.active and javafx.runtime in project.properties file).${line.separator}Note: If missing, the default JavaFX-enabled platform gets created automatically when creating a new FX Project." if="javafx.runtime.missing+default"/> |
| <fail message="Platform definition problem.${line.separator}JavaFX RT path undefined. Check the definition of ${platform.active} in Java Platform Manager${line.separator}(or directly the properties platform.active and javafx.runtime in project.properties file)." if="javafx.runtime.missing-default"/> |
| </target> |
| |
| <target name="-init-javafx"> |
| <taskdef resource="com/sun/javafx/tools/ant/antlib.xml" |
| uri="javafx:com.sun.javafx.tools.ant" |
| classpath="${javafx.sdk}${file.separator}tools${file.separator}ant-javafx.jar"/> |
| <condition property="have-fx-ant-init"> |
| <typefound name="javafx:com.sun.javafx.tools.ant:init-ant"/> |
| </condition> |
| </target> |
| |
| <target name="-check-jdk-version"> |
| <exec executable="${platform.java}" outputproperty="version-output"> |
| <arg value="-version"/> |
| </exec> |
| <condition property="have-jdk-older-than-1.6"> |
| <or> |
| <contains string="${version-output}" substring="java version "1.0"/> |
| <contains string="${version-output}" substring="java version "1.1"/> |
| <contains string="${version-output}" substring="java version "1.2"/> |
| <contains string="${version-output}" substring="java version "1.3"/> |
| <contains string="${version-output}" substring="java version "1.4"/> |
| <contains string="${version-output}" substring="java version "1.5"/> |
| </or> |
| </condition> |
| </target> |
| <target name="-jdk-version-error" depends="-check-jdk-version" if="have-jdk-older-than-1.6"> |
| <fail message="Error: JavaFX 2.0+ projects require JDK version 1.6+ !"/> |
| </target> |
| |
| <target name="-check-jfx-deployment" depends="-init-javafx, -check-jdk-version, -jdk-version-error" unless="have-jdk-older-than-1.6"> |
| <condition property="jfx-deployment-available"> |
| <available file="${javafx.sdk}${file.separator}tools${file.separator}ant-javafx.jar"/> |
| </condition> |
| <echo message="jfx-deployment-available = ${jfx-deployment-available}" level="verbose"/> |
| </target> |
| |
| <target name="-check-jfx-sdk-version-old" depends="-init-javafx" unless="have-fx-ant-init"> |
| <property name="javafx.ant.version" value="1.0"/> |
| </target> |
| |
| <target name="-check-jfx-sdk-version-new" depends="-init-javafx" if="have-fx-ant-init"> |
| <fx:init-ant/> |
| <condition property="have-fx-ant-api-1.1"> |
| <!-- new features from JavaFX 2.0.2 are available in API version 1.1 or later --> |
| <matches pattern="1.[1-9]" string="${javafx.ant.version}"/> |
| </condition> |
| </target> |
| |
| <target name="-check-jfx-sdk-version" depends="-check-jfx-sdk-version-old, -check-jfx-sdk-version-new"> |
| <echo message="Detected JavaFX Ant API version ${javafx.ant.version}" level="info"/> |
| <echo message="have-fx-ant-api-1.1 = ${have-fx-ant-api-1.1}" level="verbose"/> |
| </target> |
| |
| <target name="-check-jfx-webstart"> |
| <condition property="jfx-webstart-available"> |
| <or> |
| <available file="${javafx.runtime}${file.separator}bin${file.separator}javaws.exe"/> |
| <available file="${javafx.runtime}${file.separator}bin${file.separator}javaws"/> |
| </or> |
| </condition> |
| <echo message="jfx-webstart-available = ${jfx-webstart-available}" level="verbose"/> |
| </target> |
| |
| <target name="-check-project" depends="-check-jfx-sdk-version"> |
| <condition property="main-class-available"> |
| <isset property="javafx.main.class"/> |
| </condition> |
| <condition property="preloader-available"> |
| <and> |
| <isset property="javafx.preloader.enabled"/> |
| <equals arg1="${javafx.preloader.enabled}" arg2="true"/> |
| <isset property="javafx.preloader.class"/> |
| <not><equals arg1="${javafx.preloader.class}" arg2=""/></not> |
| <isset property="javafx.preloader.jar.filename"/> |
| <not><equals arg1="${javafx.preloader.jar.filename}" arg2=""/></not> |
| </and> |
| </condition> |
| <condition property="app-with-preloader"> |
| <and> |
| <istrue value="${preloader-available}"/> |
| <istrue value="${main-class-available}"/> |
| </and> |
| </condition> |
| <condition property="app-with-external-preloader-jar"> |
| <and> |
| <isset property="javafx.preloader.type"/> |
| <equals arg1="${javafx.preloader.type}" arg2="jar" trim="true"/> |
| </and> |
| </condition> |
| <condition property="app-without-preloader"> |
| <and> |
| <not> |
| <istrue value="${preloader-available}"/> |
| </not> |
| <istrue value="${main-class-available}"/> |
| </and> |
| </condition> |
| <condition property="preloader-app"> |
| <and> |
| <isset property="javafx.preloader"/> |
| <equals arg1="${javafx.preloader}" arg2="true"/> |
| </and> |
| </condition> |
| <condition property="html-template-available"> |
| <and> |
| <isset property="javafx.run.htmltemplate"/> |
| <not> |
| <equals arg1="${javafx.run.htmltemplate}" arg2=""/> |
| </not> |
| </and> |
| </condition> |
| <condition property="icon-available"> |
| <and> |
| <isset property="javafx.deploy.icon"/> |
| <not> |
| <equals arg1="${javafx.deploy.icon}" arg2=""/> |
| </not> |
| </and> |
| </condition> |
| <condition property="dimensions-available"> |
| <and> |
| <isset property="javafx.run.width"/> |
| <isset property="javafx.run.height"/> |
| <not><equals arg1="${javafx.run.width}" arg2=""/></not> |
| <not><equals arg1="${javafx.run.height}" arg2=""/></not> |
| </and> |
| </condition> |
| <condition property="update-mode-background"> |
| <and> |
| <isset property="javafx.deploy.backgroundupdate"/> |
| <equals arg1="${javafx.deploy.backgroundupdate}" arg2="true" trim="true"/> |
| </and> |
| </condition> |
| <condition property="offline-allowed"> |
| <and> |
| <isset property="javafx.deploy.allowoffline"/> |
| <equals arg1="${javafx.deploy.allowoffline}" arg2="true" trim="true"/> |
| </and> |
| </condition> |
| <condition property="permissions-elevated"> |
| <and> |
| <isset property="javafx.deploy.permissionselevated"/> |
| <equals arg1="${javafx.deploy.permissionselevated}" arg2="true" trim="true"/> |
| </and> |
| </condition> |
| <condition property="binary-encode-css"> |
| <and> |
| <isset property="javafx.binarycss"/> |
| <equals arg1="${javafx.binarycss}" arg2="true" trim="true"/> |
| </and> |
| </condition> |
| <condition property="rebase-lib-jars"> |
| <and> |
| <isset property="javafx.rebase.libs"/> |
| <equals arg1="${javafx.rebase.libs}" arg2="true" trim="true"/> |
| </and> |
| </condition> |
| |
| <echo message="main-class-available = ${main-class-available}" level="verbose"/> |
| <echo message="preloader-available = ${preloader-available}" level="verbose"/> |
| <echo message="app-with-preloader = ${app-with-preloader}" level="verbose"/> |
| <echo message="app-with-preloader-without-project = ${app-with-preloader-without-project}" level="verbose"/> |
| <echo message="app-without-preloader = ${app-without-preloader}" level="verbose"/> |
| <echo message="preloader-app = ${preloader-app}" level="verbose"/> |
| <echo message="html-template-available = ${html-template-available}" level="verbose"/> |
| <echo message="icon-available = ${icon-available}" level="verbose"/> |
| <echo message="dimensions-available = ${dimensions-available}" level="verbose"/> |
| <echo message="update-mode-background = ${update-mode-background}" level="verbose"/> |
| <echo message="offline-allowed = ${offline-allowed}" level="verbose"/> |
| <echo message="permissions-elevated = ${permissions-elevated}" level="verbose"/> |
| <echo message="binary-encode-css = ${binary-encode-css}" level="verbose"/> |
| <echo message="rebase-lib-jars = ${rebase-lib-jars}" level="verbose"/> |
| </target> |
| |
| <target name="-icon-warning" depends="-check-project" if="icon-available"> |
| <echo message="Warning: Note that due to a bug in early JavaFX 2.0 SDK distributions the icon may not be properly set in deployment files."/> |
| </target> |
| |
| <target name="-set-dimensions" depends="-check-project" if="dimensions-available"> |
| <property name="javafx.width" value="${javafx.run.width}"/> |
| <property name="javafx.height" value="${javafx.run.height}"/> |
| </target> |
| <target name="-reset-dimensions" depends="-check-project" unless="dimensions-available"> |
| <property name="javafx.width" value="800"/> |
| <property name="javafx.height" value="600"/> |
| </target> |
| |
| <target name="-set-update-mode-background" depends="-check-project" if="update-mode-background"> |
| <property name="update-mode" value="background"/> |
| </target> |
| <target name="-set-update-mode-eager" depends="-check-project" unless="update-mode-background"> |
| <property name="update-mode" value="eager"/> |
| </target> |
| |
| <target name="-set-permissions-elevated" depends="-check-project" if="permissions-elevated"> |
| <property name="permissions.elevated" value="true"/> |
| </target> |
| <target name="-reset-permissions-elevated" depends="-check-project" unless="permissions-elevated"> |
| <property name="permissions.elevated" value="false"/> |
| </target> |
| |
| <target name="-set-binary-css" depends="-check-project" if="binary-encode-css"> |
| <property name="css-include-ext" value="bss"/> |
| <property name="css-exclude-ext" value="css"/> |
| </target> |
| <target name="-unset-binary-css" depends="-check-project" unless="binary-encode-css"> |
| <property name="css-include-ext" value="css"/> |
| <property name="css-exclude-ext" value="bss"/> |
| </target> |
| <target name="-copy-binary-css" depends="-check-project" if="binary-encode-css"> |
| <fileset id="cssfiles" dir="${basedir}${file.separator}${build.classes.dir}"> |
| <include name="**${file.separator}*.css"/> |
| </fileset> |
| <property name="cssfileslist" refid="cssfiles"/> |
| <echo message="css files to binary convert: " level="verbose">${cssfileslist}</echo> |
| <fx:csstobin outdir="${basedir}${file.separator}${build.classes.dir}"> |
| <fileset refid="cssfiles"/> |
| </fx:csstobin> |
| </target> |
| |
| |
| <!-- Copy dependent libraries --> |
| |
| <target name="-jfx-copylibs" depends="init,compile,-pre-pre-jar,-pre-jar"> |
| <local name="run.classpath.without.build.classes.and.dist.dir"/> |
| <pathconvert property="run.classpath.without.build.classes.and.dist.dir"> |
| <path path="${run.classpath}"/> |
| <map from="${basedir}${file.separator}${build.classes.dir}" to=""/> |
| <map from="${basedir}${file.separator}${dist.jar}" to=""/> |
| </pathconvert> |
| <!-- add possibly missing dependencies at distance 2 (build system logic thus provides transitive closure) --> |
| <local name="run.and.lib.classpath"/> |
| <script language="javascript"> |
| <![CDATA[ |
| var pathConvert = project.createTask("pathconvert"); |
| pathConvert.setProperty("run.and.lib.classpath"); |
| var classPath = project.getProperty("run.classpath.without.build.classes.and.dist.dir"); |
| var fileSeparator = project.getProperty("file.separator"); |
| if(classPath != null) { |
| var classPathCopy = pathConvert.createPath(); |
| classPathCopy.setPath(classPath); |
| if(classPath.indexOf(";") != -1) { |
| var pathArray = classPath.split(";"); |
| } else { |
| var pathArray = classPath.split(":"); |
| } |
| var added = ""; |
| for (var i=0; i<pathArray.length; i++) { |
| var index = pathArray[i].lastIndexOf(fileSeparator); |
| if (index >=0) { |
| var onePath = pathArray[i].substr(0,index+1) + "lib"; |
| var oneDir = new java.io.File(onePath); |
| if(oneDir.exists()) { |
| var fs = project.createDataType("fileset"); |
| fs.setDir( oneDir ); |
| fs.setIncludes("*.jar"); |
| var ds = fs.getDirectoryScanner(project); |
| var srcFiles = ds.getIncludedFiles(); |
| for (j=0; j<srcFiles.length; j++) { |
| if(classPath.indexOf(srcFiles[j]) == -1 && added.indexOf(srcFiles[j]) == -1) { |
| var path = pathConvert.createPath(); |
| path.setPath(onePath + fileSeparator + srcFiles[j]); |
| added += srcFiles[j]; |
| } |
| } |
| } |
| } |
| } |
| } |
| pathConvert.perform(); |
| ]]> |
| </script> |
| <echo message="run.and.lib.classpath = ${run.and.lib.classpath}" level="verbose"/> |
| <delete dir="${dist.dir}${file.separator}lib" includeEmptyDirs="true" quiet="true"/> |
| <copy todir="${dist.dir}${file.separator}lib" flatten="true" preservelastmodified="true" overwrite="true"> |
| <path> |
| <pathelement path="${run.and.lib.classpath}"/> |
| </path> |
| </copy> |
| </target> |
| |
| <target name="-copy-external-preloader-jar" depends="-check-project" if="app-with-external-preloader-jar"> |
| <copy file="${javafx.preloader.jar.path}" todir="${dist.dir}${file.separator}lib"/> |
| </target> |
| |
| |
| <!-- Optional classpath re-base of dependent JAR manifests after copy to lib/, required by GlassFish --> |
| |
| <macrodef name="rebase-lib"> |
| <attribute name="jarfile"/> |
| <sequential> |
| <local name="tmpdir"/> |
| <property name="tmpdir" value="${java.io.tmpdir}${file.separator}${user.name}_${ant.project.name}_rebase" /> |
| <echo message="tmpdir = ${tmpdir}" level="verbose"/> |
| <delete dir="${tmpdir}" quiet="true"/> |
| <mkdir dir="${tmpdir}"/> |
| <unzip src="@{jarfile}" dest="${tmpdir}"> |
| <patternset> |
| <include name="META-INF${file.separator}MANIFEST.MF"/> |
| </patternset> |
| </unzip> |
| <local name="manifest.file.temp"/> |
| <property name="manifest.file.temp" value="${tmpdir}${file.separator}META-INF${file.separator}MANIFEST.MF" /> |
| <echo message="manifest.file.temp = ${manifest.file.temp}" level="verbose"/> |
| <!-- edited manifest file --> |
| <local name="manifest.file.temp.new"/> |
| <property name="manifest.file.temp.new" value="${manifest.file.temp}_new" /> |
| <echo message="manifest.file.temp.new = ${manifest.file.temp.new}" level="verbose"/> |
| <script language="javascript"> |
| <![CDATA[ |
| var UTF_8 = "UTF-8"; |
| var ATTR_CLASS_PATH = "Class-Path"; |
| var ATTR_CLASS_PATH_FX = "JavaFX-Class-Path"; |
| function isSigned(manifest) { |
| var sections = manifest.getSectionNames(); |
| while(sections.hasMoreElements()) { |
| var sectionname = sections.nextElement(); |
| var section = manifest.getSection(sectionname); |
| if(section != null) { |
| var sectionKeys = section.getAttributeKeys(); |
| while (sectionKeys.hasMoreElements()) { |
| var element = sectionKeys.nextElement(); |
| if (element.endsWith("-Digest") || element.endsWith("-digest")) { |
| return true; |
| } |
| } |
| } |
| } |
| return false; |
| } |
| var src = project.getProperty("manifest.file.temp"); |
| var srf = new java.io.File(src); |
| try { |
| var fis = new java.io.FileInputStream(srf); |
| try { |
| var isr = new java.io.InputStreamReader(fis, UTF_8); |
| try { |
| var manifest = new org.apache.tools.ant.taskdefs.Manifest(isr); |
| } finally { |
| isr.close(); |
| } |
| } finally { |
| fis.close(); |
| } |
| } catch(e) { |
| var manifest = null; |
| } |
| if(manifest != null) { |
| if(isSigned(manifest)) { |
| println("Warning: Signed JAR can not be rebased."); |
| } else { |
| var mainSection = manifest.getMainSection(); |
| var classPath = mainSection.getAttributeValue(ATTR_CLASS_PATH); |
| if (classPath != null) { |
| var classPathAttr = ATTR_CLASS_PATH; |
| } else { |
| classPath = mainSection.getAttributeValue(ATTR_CLASS_PATH_FX); |
| if(classPath != null) { |
| var classPathAttr = ATTR_CLASS_PATH_FX; |
| } |
| } |
| if(classPath != null) { |
| var result = new java.lang.StringBuilder(); |
| var changed = false; |
| var pathArray = classPath.split(" "); |
| for (var i=0; i<pathArray.length; i++) { |
| if (result.length() > 0) { |
| result.append(' '); |
| } |
| var index = pathArray[i].lastIndexOf('/'); |
| if (index >=0 && index < pathArray[i].length()-1) { |
| pathArray[i] = pathArray[i].substring(index+1); |
| changed = true; |
| } |
| result.append(pathArray[i]); |
| } |
| mainSection.removeAttribute(classPathAttr); |
| mainSection.addAttributeAndCheck(new org.apache.tools.ant.taskdefs.Manifest.Attribute(classPathAttr, result.toString())); |
| var tgt = project.getProperty("manifest.file.temp.new"); |
| var tgf = new java.io.File(tgt); |
| try { |
| var fos = new java.io.FileOutputStream(tgf); |
| try { |
| var osw = new java.io.OutputStreamWriter(fos, UTF_8); |
| try { |
| var manifestOut = new java.io.PrintWriter(osw); |
| manifest.write(manifestOut); |
| manifestOut.close(); |
| } finally { |
| osw.close(); |
| } |
| } finally { |
| fos.close(); |
| } |
| } catch(e) { |
| println("Warning: problem storing rebased manifest file."); |
| } |
| } |
| } |
| } |
| ]]> |
| </script> |
| <antcall target="-move-new-manifest-if-exists"> |
| <param name="move.file.from" value="${manifest.file.temp.new}"/> |
| <param name="move.file.to" value="${manifest.file.temp}"/> |
| </antcall> |
| <zip destfile="@{jarfile}" basedir="${tmpdir}" update="true"/> |
| <delete dir="${tmpdir}" quiet="true"/> |
| </sequential> |
| </macrodef> |
| |
| <target name="-new-temp-mainfest-existence"> |
| <condition property="new-temp-manifest-exists"> |
| <available file="${move.file.from}"/> |
| </condition> |
| <echo message="new-temp-manifest-exists = ${new-temp-manifest-exists}" level="verbose"/> |
| </target> |
| |
| <target name="-move-new-manifest-if-exists" depends="-new-temp-mainfest-existence" if="new-temp-manifest-exists"> |
| <move file="${move.file.from}" tofile="${move.file.to}" failonerror="false"/> |
| </target> |
| |
| <target name="-rebase-libs-macro-call"> |
| <echo message="Rebase jarfile = ${jar.file.to.rebase}" level="verbose"/> |
| <rebase-lib jarfile="${jar.file.to.rebase}"/> |
| </target> |
| |
| <target name="-rebase-libs" depends="-check-project, -jfx-copylibs" if="rebase-lib-jars"> |
| <property name="pp_rebase_dir" value="${basedir}${file.separator}${dist.dir}${file.separator}lib"/> |
| <property name="pp_rebase_fs" value="*.jar"/> |
| <script language="javascript"> |
| <![CDATA[ |
| var dir = project.getProperty("pp_rebase_dir"); |
| var fDir = new java.io.File(dir); |
| if( fDir.exists() ) { |
| var callTask = project.createTask("antcall"); |
| callTask.setTarget("-rebase-libs-macro-call"); |
| var param = callTask.createParam(); |
| param.setName("jar.file.to.rebase"); |
| var includes = project.getProperty("pp_rebase_fs"); |
| var fs = project.createDataType("fileset"); |
| fs.setDir( fDir ); |
| fs.setIncludes(includes); |
| var ds = fs.getDirectoryScanner(project); |
| var srcFiles = ds.getIncludedFiles(); |
| for (i=0; i<srcFiles.length; i++) { |
| param.setValue(dir + "${file.separator}" + srcFiles[i]); |
| callTask.perform(); |
| } |
| } |
| ]]> |
| </script> |
| </target> |
| |
| |
| <!-- Main Target --> |
| |
| <target name="jfx-deployment" depends="-check-jfx-deployment,-check-project,-icon-warning, |
| -set-dimensions,-reset-dimensions,-set-update-mode-background,-set-update-mode-eager, |
| -set-permissions-elevated,-reset-permissions-elevated, |
| -copy-external-preloader-jar,-set-binary-css,-unset-binary-css,-copy-binary-css, |
| -deploy-app-sign-nopreloader-notemplate, |
| -deploy-app-sign-preloader-notemplate, |
| -deploy-app-sign-nopreloader-template, |
| -deploy-app-sign-preloader-template, |
| -deploy-app-nosign-nopreloader-notemplate, |
| -deploy-app-nosign-preloader-notemplate, |
| -deploy-app-nosign-nopreloader-template, |
| -deploy-app-nosign-preloader-template" |
| if="jfx-deployment-available"> |
| </target> |
| |
| |
| <!-- Security / Signing --> |
| |
| <target name="-unavailable-signjars-task" depends="-check-jfx-deployment" unless="jfx-deployment-available"> |
| <echo message="Task required to sign JAR file is missing, check the availability of JavaFX 2.0 deployment tasks. JAR files will not be signed."/> |
| </target> |
| |
| <target name="-security-props-check"> |
| <condition property="javafx.signed.true"> |
| <istrue value="${javafx.signing.enabled}"/> |
| </condition> |
| </target> |
| |
| <target name="-check-signing-possible" depends="-security-props-check,-check-jfx-deployment,-unavailable-signjars-task"> |
| <condition property="javafx.signed.true+signjars.task.available"> |
| <and> |
| <isset property="javafx.signed.true"/> |
| <isset property="jfx-deployment-available"/> |
| </and> |
| </condition> |
| </target> |
| |
| <target name="-javafx-init-keystore" depends="-check-signing-possible,-javafx-init-signing,-javafx-init-keystore1,-javafx-init-keystore2,-check-keystore-exists" if="javafx.signed.true+signjars.task.available" unless="javafx.signjar.keystore.exists"> |
| <property name="javafx.signjar.vendor" value="CN=${application.vendor}"/> |
| <echo message="Going to create default keystore in ${javafx.signjar.keystore}"/> |
| <genkey dname="${javafx.signjar.vendor}" alias="${javafx.signjar.alias}" keystore="${javafx.signjar.keystore}" |
| storepass="${javafx.signjar.storepass}" keypass="${javafx.signjar.keypass}"/> |
| </target> |
| |
| <target name="-check-keystore-exists"> |
| <available property="javafx.signjar.keystore.exists" file="${javafx.signjar.keystore}"/> |
| </target> |
| |
| <target name="-javafx-init-signing"> |
| <condition property="generated.key.signing"> |
| <equals arg1="${javafx.signing.type}" arg2="self" trim="true"/> |
| </condition> |
| </target> |
| |
| <target name="-javafx-init-keystore1" depends="-javafx-init-signing" if="generated.key.signing"> |
| <property name="javafx.signjar.keystore" value="${basedir}${file.separator}build${file.separator}nb-jfx.jks" /> |
| <property name="javafx.signjar.storepass" value="storepass"/> |
| <property name="javafx.signjar.keypass" value="keypass"/> |
| <property name="javafx.signjar.alias" value="nb-jfx"/> |
| </target> |
| |
| <target name="-javafx-init-keystore2" depends="-javafx-init-signing" unless="generated.key.signing"> |
| <property name="javafx.signjar.keystore" value="${javafx.signing.keystore}" /> |
| <property name="javafx.signjar.storepass" value="${javafx.signing.keystore.password}"/> |
| <property name="javafx.signjar.keypass" value="${javafx.signing.keyalias.password}"/> |
| <property name="javafx.signjar.alias" value="${javafx.signing.keyalias}"/> |
| </target> |
| |
| |
| <!-- Project Deployment Macros --> |
| |
| <macrodef name="deploy-defines"> |
| <sequential> |
| <basename property="jfx.deployment.jar" file="${dist.jar}"/> |
| <property name="jfx.deployment.dir" location="${dist.dir}"/> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="deploy-preprocess"> |
| <sequential> |
| <delete includeEmptyDirs="true" quiet="true"> |
| <fileset dir="${jfx.deployment.dir}${file.separator}lib"> |
| <exclude name="**${file.separator}*.jar"/> |
| </fileset> |
| </delete> |
| </sequential> |
| </macrodef> |
| |
| <!-- fx:jar scripted call enables passing of arbitrarily long list of params and fx-version dependent behavior --> |
| <macrodef name="deploy-jar"> |
| <sequential> |
| <typedef name="fx_jar" classname="com.sun.javafx.tools.ant.FXJar" classpath="${javafx.sdk}${file.separator}tools${file.separator}ant-javafx.jar"/> |
| <property name="pp_jar_destfile" value="${jfx.deployment.dir}${file.separator}${jfx.deployment.jar}"/> |
| <property name="pp_jar_buildclasses" value="${basedir}${file.separator}${build.classes.dir}"/> |
| <property name="pp_jar_cssbss" value="**${file.separator}*.${css-exclude-ext}"/> |
| <property name="pp_jar_dir" value="${jfx.deployment.dir}"/> |
| <property name="pp_jar_fs1" value="lib${file.separator}${javafx.preloader.jar.filename}"/> |
| <property name="pp_jar_fs2" value="lib${file.separator}*.jar"/> |
| <script language="javascript"> |
| <![CDATA[ |
| var S = java.io.File.separator; |
| var JFXPAR = "javafx.param"; |
| var JFXPARN = "name"; |
| var JFXPARV = "value"; |
| var JFXLAZY = "download.mode.lazy.jar"; |
| var withpreloader = project.getProperty("app-with-preloader"); |
| var fx_ant_api_1_1 = project.getProperty("have-fx-ant-api-1.1"); |
| |
| // get jars with lazy download mode property set |
| function getLazyJars() { |
| var jars = new Array(); |
| var keys = project.getProperties().keys(); |
| while(keys.hasMoreElements()) { |
| var pn = keys.nextElement(); |
| if(pn.substr(0,JFXLAZY.length) == JFXLAZY) { |
| var fname = pn.substring(JFXLAZY.length+1); |
| jars.push(fname); |
| } |
| } |
| return jars.length > 0 ? jars : null; |
| } |
| // set download mode of dependent libraries |
| function setDownloadMode(fsEager, fsLazy, jars) { |
| for(i = 0; i < jars.length; i++) { |
| fsEager.setExcludes("lib" + S + jars[i]); |
| fsLazy.setIncludes("lib" + S + jars[i]); |
| } |
| } |
| |
| // fx:jar |
| var jar = project.createTask("fx_jar"); |
| jar.setProject(project); |
| var destfile = project.getProperty("pp_jar_destfile"); |
| jar.setDestfile(destfile); |
| |
| // fx:application |
| var app = jar.createApplication(); |
| app.setProject(project); |
| var title = project.getProperty("application.title"); |
| var mainclass = project.getProperty("javafx.main.class"); |
| var fallback = project.getProperty("javafx.fallback.class"); |
| app.setName(title); |
| app.setMainClass(mainclass); |
| app.setFallbackClass(fallback); |
| if(withpreloader == "true") { |
| preloaderclass = project.getProperty("javafx.preloader.class"); |
| app.setPreloaderClass(preloaderclass); |
| } |
| // fx:param, fx:argument |
| var keys = project.getProperties().keys(); |
| while(keys.hasMoreElements()) { |
| var pn = keys.nextElement(); |
| if(pn.substr(0,JFXPAR.length) == JFXPAR && pn.indexOf(JFXPARN) == (pn.length()-JFXPARN.length)) { |
| var propn = project.getProperty(pn); |
| if(propn != null && propn.length() > 0) { |
| var pv = pn.substr(0,pn.indexOf(JFXPARN)) + JFXPARV; |
| var propv = project.getProperty(pv); |
| if(propv != null && propv.length() > 0) { |
| var par = app.createParam(); |
| par.setName(propn); |
| par.setValue(propv); |
| } else { |
| if(fx_ant_api_1_1 == "true") { |
| var arg = app.createArgument(); |
| arg.addText(propn); |
| } |
| } |
| } |
| } |
| } |
| |
| // fx:resources |
| var res = jar.createResources(); |
| res.setProject(project); |
| var pdir = project.getProperty("pp_jar_dir"); |
| if(withpreloader == "true") { |
| var f1 = res.createFileSet(); |
| f1.setProject(project); |
| f1.setDir(new java.io.File(pdir)); |
| var i1 = project.getProperty("pp_jar_fs1"); |
| f1.setIncludes(i1); |
| f1.setRequiredFor("preloader"); |
| var f2 = res.createFileSet(); |
| f2.setProject(project); |
| f2.setDir(new java.io.File(pdir)); |
| var i2a = project.getProperty("jfx.deployment.jar"); |
| var i2b = project.getProperty("pp_jar_fs2"); |
| var e2c = project.getProperty("pp_jar_fs1"); |
| f2.setIncludes(i2a); |
| f2.setIncludes(i2b); |
| f2.setExcludes(e2c); |
| f2.setRequiredFor("startup"); |
| var lazyjars = getLazyJars(); |
| if(lazyjars != null) { |
| var f3 = res.createFileSet(); |
| f3.setProject(project); |
| f3.setDir(new java.io.File(pdir)); |
| f3.setRequiredFor("runtime"); |
| setDownloadMode(f2,f3,lazyjars); |
| } |
| } else { |
| var fn = res.createFileSet(); |
| fn.setProject(project); |
| fn.setDir(new java.io.File(pdir)); |
| var ia = project.getProperty("jfx.deployment.jar"); |
| var ib = project.getProperty("pp_jar_fs2"); |
| fn.setIncludes(ia); |
| fn.setIncludes(ib); |
| fn.setRequiredFor("startup"); |
| var lazyjars = getLazyJars(); |
| if(lazyjars != null) { |
| var fn2 = res.createFileSet(); |
| fn2.setProject(project); |
| fn2.setDir(new java.io.File(pdir)); |
| fn2.setRequiredFor("runtime"); |
| setDownloadMode(fn,fn2,lazyjars); |
| } |
| } |
| |
| // fileset to exclude *.css or *.bss |
| var fs = jar.createFileSet(); |
| fs.setProject(project); |
| var buildcls = project.getProperty("pp_jar_buildclasses"); |
| var exc = project.getProperty("pp_jar_cssbss"); |
| fs.setDir(new java.io.File(buildcls)); |
| fs.setExcludes(exc); |
| |
| // manifest |
| var man = jar.createManifest(); |
| var a1val = project.getProperty("application.vendor"); |
| var a1 = new org.apache.tools.ant.taskdefs.Manifest.Attribute(); |
| a1.setName("Implementation-Vendor"); |
| a1.setValue(a1val); |
| man.addConfiguredAttribute(a1); |
| var a2val = project.getProperty("application.title"); |
| var a2 = new org.apache.tools.ant.taskdefs.Manifest.Attribute(); |
| a2.setName("Implementation-Title"); |
| a2.setValue(a2val); |
| man.addConfiguredAttribute(a2); |
| var a3 = new org.apache.tools.ant.taskdefs.Manifest.Attribute(); |
| a3.setName("Implementation-Version"); |
| a3.setValue("1.0"); |
| man.addConfiguredAttribute(a3); |
| |
| jar.perform(); |
| ]]> |
| </script> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="deploy-sign"> |
| <sequential> |
| <echo message="keystore=${javafx.signjar.keystore}" level="verbose"/> |
| <echo message="storepass=${javafx.signjar.storepass}" level="verbose"/> |
| <echo message="alias=${javafx.signjar.alias}" level="verbose"/> |
| <echo message="keypass=${javafx.signjar.keypass}" level="verbose"/> |
| <signjar keystore="${javafx.signjar.keystore}" |
| storepass="${javafx.signjar.storepass}" |
| alias="${javafx.signjar.alias}" |
| keypass="${javafx.signjar.keypass}"> |
| <fileset dir="${jfx.deployment.dir}"> |
| <include name="${jfx.deployment.jar}"/> |
| <include name="lib${file.separator}*.jar"/> |
| </fileset> |
| </signjar> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="deploy-sign-preloader"> |
| <sequential> |
| <echo message="keystore=${javafx.signjar.keystore}" level="verbose"/> |
| <echo message="storepass=${javafx.signjar.storepass}" level="verbose"/> |
| <echo message="alias=${javafx.signjar.alias}" level="verbose"/> |
| <echo message="keypass=${javafx.signjar.keypass}" level="verbose"/> |
| <signjar keystore="${javafx.signjar.keystore}" |
| storepass="${javafx.signjar.storepass}" |
| alias="${javafx.signjar.alias}" |
| keypass="${javafx.signjar.keypass}"> |
| <fileset dir="${jfx.deployment.dir}"> |
| <include name="lib${file.separator}${javafx.preloader.jar.filename}"/> |
| </fileset> |
| </signjar> |
| <signjar keystore="${javafx.signjar.keystore}" |
| storepass="${javafx.signjar.storepass}" |
| alias="${javafx.signjar.alias}" |
| keypass="${javafx.signjar.keypass}"> |
| <fileset dir="${jfx.deployment.dir}"> |
| <include name="${jfx.deployment.jar}"/> |
| <include name="lib${file.separator}*.jar"/> |
| <exclude name="lib${file.separator}${javafx.preloader.jar.filename}"/> |
| </fileset> |
| </signjar> |
| </sequential> |
| </macrodef> |
| |
| <macrodef name="deploy-process-template"> |
| <sequential> |
| <echo message="javafx.run.htmltemplate = ${javafx.run.htmltemplate}" level="verbose"/> |
| <pathconvert property="javafx.run.htmltemplate.processed"> |
| <path path="${javafx.run.htmltemplate}"/> |
| <mapper> |
| <chainedmapper> |
| <flattenmapper/> |
| <regexpmapper from="(.*)(\.html?)$" to="\1-processed\2"/> |
| <globmapper from="*" to="${jfx.deployment.dir}${file.separator}*" casesensitive="no"/> |
| </chainedmapper> |
| </mapper> |
| </pathconvert> |
| <echo message="javafx.run.htmltemplate.processed = ${javafx.run.htmltemplate.processed}" level="verbose"/> |
| </sequential> |
| </macrodef> |
| |
| <!-- fx:deploy scripted call enables passing of arbitrarily long lists of params, vmoptions and callbacks and fx-version dependent behavior --> |
| <macrodef name="deploy-deploy"> |
| <sequential> |
| <typedef name="fx_deploy" classname="com.sun.javafx.tools.ant.DeployFXTask" classpath="${javafx.sdk}${file.separator}tools${file.separator}ant-javafx.jar"/> |
| <property name="pp_deploy_dir" value="${jfx.deployment.dir}"/> |
| <property name="pp_deploy_fs1" value="lib${file.separator}${javafx.preloader.jar.filename}"/> |
| <property name="pp_deploy_fs2" value="lib${file.separator}*.jar"/> |
| <script language="javascript"> |
| <![CDATA[ |
| function isTrue(prop) { |
| return prop != null && |
| (prop.toLowerCase()=="true" || prop.toLowerCase()=="yes" || prop.toLowerCase()=="on"); |
| } |
| var S = java.io.File.separator; |
| var JFXPAR = "javafx.param"; |
| var JFXPARN = "name"; |
| var JFXPARV = "value"; |
| var JFXCALLB = "javafx.jscallback"; |
| var JFXLAZY = "download.mode.lazy.jar"; |
| var withpreloader = project.getProperty("app-with-preloader"); |
| var fx_ant_api_1_1 = project.getProperty("have-fx-ant-api-1.1"); |
| |
| // get jars with lazy download mode property set |
| function getLazyJars() { |
| var jars = new Array(); |
| var keys = project.getProperties().keys(); |
| while(keys.hasMoreElements()) { |
| var pn = keys.nextElement(); |
| if(pn.substr(0,JFXLAZY.length) == JFXLAZY) { |
| var fname = pn.substring(JFXLAZY.length+1); |
| jars.push(fname); |
| } |
| } |
| return jars.length > 0 ? jars : null; |
| } |
| // set download mode of dependent libraries |
| function setDownloadMode(fsEager, fsLazy, jars) { |
| for(i = 0; i < jars.length; i++) { |
| fsEager.setExcludes("lib" + S + jars[i]); |
| fsLazy.setIncludes("lib" + S + jars[i]); |
| } |
| } |
| |
| // fx:deploy |
| var deploy = project.createTask("fx_deploy"); |
| deploy.setProject(project); |
| var width = project.getProperty("javafx.width"); |
| var height = project.getProperty("javafx.height"); |
| var outdir = project.getProperty("jfx.deployment.dir"); |
| var embedJNLP = project.getProperty("javafx.deploy.embedJNLP"); |
| var updatemode = project.getProperty("update-mode"); |
| var outfile = project.getProperty("application.title"); |
| var includeDT = project.getProperty("javafx.deploy.includeDT"); |
| var offline = project.getProperty("javafx.deploy.allowoffline"); |
| deploy.setWidth(width); |
| deploy.setHeight(height); |
| deploy.setOutdir(outdir); |
| deploy.setEmbedJNLP(isTrue(embedJNLP)); |
| deploy.setUpdateMode(updatemode); |
| deploy.setOutfile(outfile); |
| deploy.setIncludeDT(isTrue(includeDT)); |
| if(offline != null) { |
| if(fx_ant_api_1_1 == "true") { |
| deploy.setOfflineAllowed(isTrue(offline)); |
| } else { |
| println("Warning: offlineAllowed not supported by this version of JavaFX SDK deployment Ant task. Please upgrade JavaFX to 2.0.2 or higher."); |
| } |
| } |
| |
| // fx:application |
| var app = deploy.createApplication(); |
| app.setProject(project); |
| var title = project.getProperty("application.title"); |
| var mainclass = project.getProperty("javafx.main.class"); |
| var fallback = project.getProperty("javafx.fallback.class"); |
| app.setName(title); |
| app.setMainClass(mainclass); |
| app.setFallbackClass(fallback); |
| if(withpreloader == "true") { |
| preloaderclass = project.getProperty("javafx.preloader.class"); |
| app.setPreloaderClass(preloaderclass); |
| } |
| // fx:param, fx:argument |
| var keys = project.getProperties().keys(); |
| while(keys.hasMoreElements()) { |
| var pn = keys.nextElement(); |
| if(pn.substr(0,JFXPAR.length) == JFXPAR && pn.indexOf(JFXPARN) == (pn.length()-JFXPARN.length)) { |
| var propn = project.getProperty(pn); |
| if(propn != null && propn.length() > 0) { |
| var pv = pn.substr(0,pn.indexOf(JFXPARN)) + JFXPARV; |
| var propv = project.getProperty(pv); |
| if(propv != null && propv.length() > 0) { |
| var par = app.createParam(); |
| par.setName(propn); |
| par.setValue(propv); |
| } else { |
| if(fx_ant_api_1_1 == "true") { |
| var arg = app.createArgument(); |
| arg.addText(propn); |
| } else { |
| println("Warning: Unnamed parameters not supported by this version of JavaFX SDK deployment Ant tasks. Upgrade JavaFX to 2.0.2 or higher."); |
| } |
| } |
| } |
| } |
| } |
| |
| // fx:resources |
| var res = deploy.createResources(); |
| res.setProject(project); |
| var deploydir = project.getProperty("pp_deploy_dir"); |
| if(withpreloader == "true") { |
| var f1 = res.createFileSet(); |
| f1.setProject(project); |
| f1.setDir(new java.io.File(deploydir)); |
| var i1 = project.getProperty("pp_deploy_fs1"); |
| f1.setIncludes(i1); |
| f1.setRequiredFor("preloader"); |
| var f2 = res.createFileSet(); |
| f2.setProject(project); |
| f2.setDir(new java.io.File(deploydir)); |
| var i2a = project.getProperty("jfx.deployment.jar"); |
| var i2b = project.getProperty("pp_deploy_fs2"); |
| var e2c = project.getProperty("pp_deploy_fs1"); |
| f2.setIncludes(i2a); |
| f2.setIncludes(i2b); |
| f2.setExcludes(e2c); |
| f2.setRequiredFor("startup"); |
| var lazyjars = getLazyJars(); |
| if(lazyjars != null) { |
| var f3 = res.createFileSet(); |
| f3.setProject(project); |
| f3.setDir(new java.io.File(deploydir)); |
| f3.setRequiredFor("runtime"); |
| setDownloadMode(f2,f3,lazyjars); |
| } |
| } else { |
| var fn = res.createFileSet(); |
| fn.setProject(project); |
| fn.setDir(new java.io.File(deploydir)); |
| var ia = project.getProperty("jfx.deployment.jar"); |
| var ib = project.getProperty("pp_deploy_fs2"); |
| fn.setIncludes(ia); |
| fn.setIncludes(ib); |
| fn.setRequiredFor("startup"); |
| var lazyjars = getLazyJars(); |
| if(lazyjars != null) { |
| var fn2 = res.createFileSet(); |
| fn2.setProject(project); |
| fn2.setDir(new java.io.File(deploydir)); |
| fn2.setRequiredFor("runtime"); |
| setDownloadMode(fn,fn2,lazyjars); |
| } |
| } |
| |
| // fx:info |
| var info = deploy.createInfo(); |
| info.setProject(project); |
| var vendor = project.getProperty("application.vendor"); |
| info.setTitle(title); // title known from before |
| info.setVendor(vendor); |
| var icon = project.getProperty("javafx.deploy.icon"); |
| if(icon != null) { |
| if(fx_ant_api_1_1 == "true") { |
| var iicon = info.createIcon(); |
| iicon.setHref(icon); |
| } else { |
| println("Warning: Icon not supported by this version of JavaFX SDK deployment Ant task. Please upgrade JavaFX to 2.0.2 or higher."); |
| } |
| } |
| |
| // fx:permissions |
| var perm = deploy.createPermissions(); |
| perm.setProject(project); |
| var elev = project.getProperty("permissions.elevated"); |
| perm.setElevated(isTrue(elev)); |
| |
| // fx:preferences |
| var pref = deploy.createPreferences(); |
| pref.setProject(project); |
| var scut = project.getProperty("javafx.deploy.adddesktopshortcut"); |
| var instp = project.getProperty("javafx.deploy.installpermanently"); |
| var smenu = project.getProperty("javafx.deploy.addstartmenushortcut"); |
| pref.setShortcut(isTrue(scut)); |
| pref.setInstall(isTrue(instp)); |
| pref.setMenu(isTrue(smenu)); |
| |
| // fx:template |
| var templ = project.getProperty("javafx.run.htmltemplate"); |
| var templp = project.getProperty("javafx.run.htmltemplate.processed"); |
| if(templ != null && templp != null && templ.length() > 0 && templp.length() > 0) { |
| var temp = deploy.createTemplate(); |
| temp.setProject(project); |
| temp.setFile(new java.io.File(templ)); |
| temp.setTofile(new java.io.File(templp)); |
| } |
| |
| // fx:platform |
| var plat = deploy.createPlatform(); |
| plat.setProject(project); |
| plat.setJavafx("2.0+"); |
| var jvmargs = project.getProperty("run.jvmargs"); |
| if(jvmargs != null && jvmargs.length() > 0) { |
| var jvmargss = jvmargs.split(" "); |
| for(i = 0; i < jvmargss.length; i++) { |
| if(jvmargss[i] != null && jvmargss[i].length() > 0) { |
| var vmarg = plat.createJvmarg(); |
| vmarg.setValue(jvmargss[i]); |
| } |
| } |
| } |
| |
| // fx:callbacks |
| var callbs = deploy.createCallbacks(); |
| callbs.setProject(project); |
| var keys = project.getProperties().keys(); |
| while(keys.hasMoreElements()) { |
| var pn = keys.nextElement(); |
| if(pn.substr(0,JFXCALLB.length) == JFXCALLB) { |
| var prop = project.getProperty(pn); |
| if(prop != null && prop.length() > 0) { |
| var cname = pn.substring(JFXCALLB.length+1); |
| var cb = callbs.createCallback(); |
| cb.setProject(project); |
| cb.setName(cname); |
| cb.addText(prop); |
| } |
| } |
| } |
| |
| deploy.perform(); |
| ]]> |
| </script> |
| </sequential> |
| </macrodef> |
| |
| |
| <!-- Project Deployment Targets --> |
| |
| <target name="-check-sign" depends="-check-project,-javafx-init-keystore" if="javafx.signed.true+signjars.task.available"> |
| <condition property="sign-nopreloader-notemplate"> |
| <and> |
| <isset property="app-without-preloader"/> |
| <not><isset property="html-template-available"/></not> |
| </and> |
| </condition> |
| <condition property="sign-preloader-notemplate"> |
| <and> |
| <isset property="app-with-preloader"/> |
| <not><isset property="html-template-available"/></not> |
| </and> |
| </condition> |
| <condition property="sign-nopreloader-template"> |
| <and> |
| <isset property="app-without-preloader"/> |
| <isset property="html-template-available"/> |
| </and> |
| </condition> |
| <condition property="sign-preloader-template"> |
| <and> |
| <isset property="app-with-preloader"/> |
| <isset property="html-template-available"/> |
| </and> |
| </condition> |
| </target> |
| <target name="-check-nosign" depends="-check-project"> |
| <condition property="nosign-nopreloader-notemplate"> |
| <and> |
| <isset property="app-without-preloader"/> |
| <not><isset property="html-template-available"/></not> |
| <not><isset property="javafx.signed.true"/></not> |
| </and> |
| </condition> |
| <condition property="nosign-preloader-notemplate"> |
| <and> |
| <isset property="app-with-preloader"/> |
| <not><isset property="html-template-available"/></not> |
| <not><isset property="javafx.signed.true"/></not> |
| </and> |
| </condition> |
| <condition property="nosign-nopreloader-template"> |
| <and> |
| <isset property="app-without-preloader"/> |
| <isset property="html-template-available"/> |
| <not><isset property="javafx.signed.true"/></not> |
| </and> |
| </condition> |
| <condition property="nosign-preloader-template"> |
| <and> |
| <isset property="app-with-preloader"/> |
| <isset property="html-template-available"/> |
| <not><isset property="javafx.signed.true"/></not> |
| </and> |
| </condition> |
| </target> |
| |
| |
| <!-- WITH SIGNING --> |
| |
| <!-- project without preloader --> |
| <!-- no html template --> |
| <target name="-deploy-app-sign-nopreloader-notemplate" depends="-check-sign" if="sign-nopreloader-notemplate" unless="preloader-app"> |
| <echo message="-deploy-app-sign-nopreloader-notemplate" level="verbose"/> |
| <deploy-defines/> |
| <deploy-preprocess/> |
| <deploy-jar/> |
| <deploy-sign/> |
| <deploy-deploy/> |
| </target> |
| |
| <!-- project with preloader --> |
| <!-- no html template --> |
| <target name="-deploy-app-sign-preloader-notemplate" depends="-check-sign" if="sign-preloader-notemplate" unless="preloader-app"> |
| <echo message="-deploy-app-sign-preloader-notemplate" level="verbose"/> |
| <deploy-defines/> |
| <deploy-preprocess/> |
| <deploy-jar/> |
| <deploy-sign-preloader/> |
| <deploy-deploy/> |
| </target> |
| |
| <!-- project without preloader --> |
| <!-- html template --> |
| <target name="-deploy-app-sign-nopreloader-template" depends="-check-sign" if="sign-nopreloader-template" unless="preloader-app"> |
| <echo message="-deploy-app-sign-nopreloader-template" level="verbose"/> |
| <deploy-defines/> |
| <deploy-preprocess/> |
| <deploy-jar/> |
| <deploy-sign/> |
| <deploy-process-template/> |
| <deploy-deploy/> |
| </target> |
| |
| <!-- project with preloader --> |
| <!-- html template --> |
| <target name="-deploy-app-sign-preloader-template" depends="-check-sign" if="sign-preloader-template" unless="preloader-app"> |
| <echo message="-deploy-app-sign-preloader-template" level="verbose"/> |
| <deploy-defines/> |
| <deploy-preprocess/> |
| <deploy-jar/> |
| <deploy-sign-preloader/> |
| <deploy-process-template/> |
| <deploy-deploy/> |
| </target> |
| |
| |
| <!-- NO SIGNING --> |
| |
| <!-- project without preloader --> |
| <!-- no html template --> |
| <target name="-deploy-app-nosign-nopreloader-notemplate" depends="-check-nosign" if="nosign-nopreloader-notemplate" unless="preloader-app"> |
| <echo message="-deploy-app-nosign-nopreloader-notemplate" level="verbose"/> |
| <deploy-defines/> |
| <deploy-preprocess/> |
| <deploy-jar/> |
| <deploy-deploy/> |
| </target> |
| |
| <!-- project with preloader --> |
| <!-- no html template --> |
| <target name="-deploy-app-nosign-preloader-notemplate" depends="-check-nosign" if="nosign-preloader-notemplate" unless="preloader-app"> |
| <echo message="-deploy-app-nosign-preloader-notemplate" level="verbose"/> |
| <deploy-defines/> |
| <deploy-preprocess/> |
| <deploy-jar/> |
| <deploy-deploy/> |
| </target> |
| |
| <!-- project without preloader --> |
| <!-- html template --> |
| <target name="-deploy-app-nosign-nopreloader-template" depends="-check-nosign" if="nosign-nopreloader-template" unless="preloader-app"> |
| <echo message="-deploy-app-nosign-nopreloader-template" level="verbose"/> |
| <deploy-defines/> |
| <deploy-preprocess/> |
| <deploy-jar/> |
| <deploy-process-template/> |
| <deploy-deploy/> |
| </target> |
| |
| <!-- project with preloader --> |
| <!-- html template --> |
| <target name="-deploy-app-nosign-preloader-template" depends="-check-nosign" if="nosign-preloader-template" unless="preloader-app"> |
| <echo message="-deploy-app-nosign-preloader-template" level="verbose"/> |
| <deploy-defines/> |
| <deploy-preprocess/> |
| <deploy-jar/> |
| <deploy-process-template/> |
| <deploy-deploy/> |
| </target> |
| |
| |
| <!-- Running/Debugging Standalone --> |
| |
| <target name="jfxsa-run" depends="run"/> |
| |
| <target name="jfxsa-debug" depends="jar,debug"/> |
| |
| |
| <!-- Running/Debugging as WebStart --> |
| |
| <target name="-check-jnlp-file"> |
| <basename property="jfx.deployment.base" file="${jfx.deployment.jar}" suffix=".jar"/> |
| <property name="jfx.deployment.jnlp" location="${jfx.deployment.dir}${file.separator}${jfx.deployment.base}.jnlp"/> |
| <condition property="jnlp-file-exists"> |
| <available file="${jfx.deployment.jnlp}"/> |
| </condition> |
| <condition property="jnlp-file-exists+netbeans.home"> |
| <and> |
| <isset property="jnlp-file-exists"/> |
| <isset property="netbeans.home"/> |
| </and> |
| </condition> |
| </target> |
| |
| <target name="-resolve-jnlp-file" depends="-check-jnlp-file" unless="jnlp-file-exists"> |
| <antcall target="jfx-deployment"/> |
| <antcall target="-check-jnlp-file"/> |
| </target> |
| |
| <target name="jfxws-run" depends="jar,-check-jfx-webstart,-resolve-jnlp-file" if="jnlp-file-exists" description="Start fx javaws execution"> |
| <echo message="Executing ${jfx.deployment.jnlp} using ${javafx.runtime}${file.separator}bin${file.separator}javaws"/> |
| <exec executable="${javafx.runtime}${file.separator}bin${file.separator}javaws"> |
| <arg file="${jfx.deployment.jnlp}"/> |
| </exec> |
| </target> |
| |
| <target name="jfxws-debug" if="jnlp-file-exists+netbeans.home" depends="jar,-check-jfx-webstart,-resolve-jnlp-file,-debug-start-debugger,-debug-javaws-debuggee" |
| description="Debug fx javaws project in IDE"/> |
| |
| <target name="-init-debug-args"> |
| <property name="version-output" value="java version "${ant.java.version}"/> |
| <condition property="have-jdk-older-than-1.4"> |
| <or> |
| <contains string="${version-output}" substring="java version "1.0"/> |
| <contains string="${version-output}" substring="java version "1.1"/> |
| <contains string="${version-output}" substring="java version "1.2"/> |
| <contains string="${version-output}" substring="java version "1.3"/> |
| </or> |
| </condition> |
| <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none"> |
| <istrue value="${have-jdk-older-than-1.4}"/> |
| </condition> |
| <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem"> |
| <os family="windows"/> |
| </condition> |
| <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}"> |
| <isset property="debug.transport"/> |
| </condition> |
| </target> |
| |
| <target name="-debug-javaws-debuggee" depends="-init-debug-args"> |
| <echo message="Executing ${jfx.deployment.jnlp} in debug mode using ${javafx.runtime}${file.separator}bin${file.separator}javaws"/> |
| <exec executable="${javafx.runtime}${file.separator}bin${file.separator}javaws"> |
| <env key="JAVAWS_VM_ARGS" value="${debug-args-line} -Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/> |
| <arg value="-wait"/> |
| <arg file="${jfx.deployment.jnlp}"/> |
| </exec> |
| </target> |
| |
| |
| <!-- Running/Debugging in Browser --> |
| |
| <target name="-check-template-processed-html-file"> |
| <condition property="html-file-exists"> |
| <and> |
| <isset property="html-template-available"/> |
| <available file="${javafx.run.htmltemplate.processed}"/> |
| </and> |
| </condition> |
| </target> |
| |
| <target name="-set-template-processed-html-file" depends="-check-template-processed-html-file" if="html-file-exists"> |
| <property name="jfx.deployment.html" location="${javafx.run.htmltemplate.processed}"/> |
| </target> |
| |
| <target name="-set-html-file" depends="-set-template-processed-html-file" unless="html-file-exists"> |
| <basename property="jfx.deployment.base" file="${jfx.deployment.jar}" suffix=".jar"/> |
| <property name="jfx.deployment.html" location="${jfx.deployment.dir}${file.separator}${jfx.deployment.base}.html"/> |
| <condition property="html-file-exists"> |
| <available file="${jfx.deployment.html}"/> |
| </condition> |
| <condition property="html-file-exists+netbeans.home"> |
| <and> |
| <isset property="html-file-exists"/> |
| <isset property="netbeans.home"/> |
| </and> |
| </condition> |
| </target> |
| |
| <target name="jfxbe-run" depends="jar,-set-html-file" if="html-file-exists" description="Start JavaFX execution in browser"> |
| <echo message="Executing ${jfx.deployment.html} using ${javafx.run.inbrowser.path}"/> |
| <exec executable="${javafx.run.inbrowser.path}"> |
| <arg file="${jfx.deployment.html}"/> |
| </exec> |
| </target> |
| |
| <target name="jfxbe-debug" if="html-file-exists+netbeans.home" depends="jar,-set-html-file,-debug-start-debugger,-debug-jfxbe-debuggee" |
| description="Debug JavaFX project in browser"/> |
| |
| <target name="-init-debug-args"> |
| <property name="version-output" value="java version "${ant.java.version}"/> |
| <condition property="have-jdk-older-than-1.4"> |
| <or> |
| <contains string="${version-output}" substring="java version "1.0"/> |
| <contains string="${version-output}" substring="java version "1.1"/> |
| <contains string="${version-output}" substring="java version "1.2"/> |
| <contains string="${version-output}" substring="java version "1.3"/> |
| </or> |
| </condition> |
| <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none"> |
| <istrue value="${have-jdk-older-than-1.4}"/> |
| </condition> |
| <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem"> |
| <os family="windows"/> |
| </condition> |
| <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}"> |
| <isset property="debug.transport"/> |
| </condition> |
| </target> |
| |
| <target name="-debug-jfxbe-debuggee" depends="-init-debug-args"> |
| <echo message="Executing ${jfx.deployment.html} in debug mode using ${javafx.run.inbrowser.path}"/> |
| <exec executable="${javafx.run.inbrowser.path}"> |
| <env key="_JPI_VM_OPTIONS" value="${debug-args-line} -Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/> |
| <arg file="${jfx.deployment.html}"/> |
| </exec> |
| </target> |
| |
| |
| </project> |