JavaFX使用Ant部署额外的文件

时间:2018-02-05 12:32:39

标签: java javafx deployment ant

在我的 JavaFX-Project 中我导入了 .exe 文件: tool.exe

图片1

Ant 的帮助下,我收到了安装文件:

图片2

我安装了该应用程序。 我的目标是在安装文件夹中包含 tool.exe 文件:

图片3

你能帮我弄清楚我需要在Ant脚本中添加哪一行代码吗?

<target name="init-fx-tasks">

    <path id="fxant">
        <filelist>
            <file name="${java.home}\..\lib\ant-javafx.jar" />
            <file name="${java.home}\lib\jfxrt.jar" />
        </filelist>
    </path>

    <taskdef resource="com/sun/javafx/tools/ant/antlib.xml" uri="javafx:com.sun.javafx.tools.ant" classpathref="fxant" />

</target>

<target name="setup-staging-area">

    <delete dir="externalLibs" />
    <delete dir="project" />
    <delete dir="projectRefs" />

    <mkdir dir="externalLibs" />
    <mkdir dir="project" />
    <mkdir dir="projectRefs" />

    <copy todir="project">
        <fileset dir="C:\Users\name\workspace\project\Test">
            <include name="src/**" />
        </fileset>
    </copy>

</target>

<target name='do-compile'>

    <delete dir="build" />

    <mkdir dir="build/src" />
    <mkdir dir="build/libs" />
    <mkdir dir="build/classes" />

    <copy todir="build/libs">
        <fileset dir="externalLibs">
        </fileset>
    </copy>

    <copy todir="build/src">
        <fileset dir="project/src">
            <include name="**/*" />
        </fileset>
    </copy>

    <javac includeantruntime="false" source="1.8" target="1.8" srcdir="build/src" destdir="build/classes" encoding="Cp1252">
        <classpath>
            <fileset dir="build/libs">
                <include name="*" />
            </fileset>
        </classpath>
    </javac>

    <copy todir="build/classes">
        <fileset dir="project/src">
            <exclude name="**/*.java" />
        </fileset>
    </copy>

</target>

<target name="do-deploy" depends="setup-staging-area, do-compile, init-fx-tasks">

    <delete file="dist" />
    <delete file="deploy" />

    <mkdir dir="dist" />
    <mkdir dir="dist/libs" />

    <copy todir="dist/libs">
        <fileset dir="externalLibs">
            <include name="*" />
        </fileset>
    </copy>

    <fx:resources id="appRes">
        <fx:fileset dir="dist" includes="Test.jar" />
        <fx:fileset dir="dist" includes="libs/*" />
        <fx:fileset dir="build" includes="tools/*" />
    </fx:resources>

    <fx:application id="fxApplication" name="TEST" mainClass="application.Main" toolkit="fx" />

    <mkdir dir="build/classes/META-INF" />

    <fx:jar destfile="dist/Test.jar">
        <fx:application refid="fxApplication" />
        <fileset dir="build/classes">
        </fileset>
        <fx:resources refid="appRes" />

        <manifest>
            <attribute name="Implementation-Vendor" value="Software" />
            <attribute name="Implementation-Title" value="TEST" />
            <attribute name="Implementation-Version" value="1" />
            <attribute name="JavaFX-Feature-Proxy" value="None" />
        </manifest>
    </fx:jar>

    <mkdir dir="deploy" />

    <fx:deploy embedJNLP="false" extension="false" includeDT="false" offlineAllowed="true" outdir="${basedir}/deploy" outfile="Test" nativeBundles="exe" updatemode="background">

        <fx:platform basedir="${java.home}" />
        <fx:info title="Test" vendor="Software" />
        <fx:application refId="fxApplication" />
        <fx:resources refid="appRes" />

    </fx:deploy>

</target>

我尝试添加此行,但它无效。

<copy todir="project">
    <fileset dir="C:\Users\name\workspace\project\Test">
        <include name="src/**" />
        <include name="tool.exe" />
    </fileset>
</copy>

提前致谢

1 个答案:

答案 0 :(得分:0)

我做到了!

也许它对其他人有用。

您需要在 dist 文件夹中创建资源文件夹。

<mkdir dir="dist" />
<mkdir dir="dist/libs" />
...
<mkdir dir="dist/resources" /> <---------- This line
...

自动复制此文件夹。

我将文件 tool.exe 复制到其中。

<copy todir="dist/resources">
    <fileset dir="C:\Users\name\workspace\project\Test">
        <include name="tool.exe" />
    </fileset>
</copy>

并在 fx:resources 中声明。

<fx:resources id="appRes">
    <fx:fileset dir="dist" includes="Test.jar" />
    <fx:fileset dir="dist" includes="libs/*" />
    ...
    <fx:fileset dir="dist" includes="resources/**" /> <---------- This line
    ...
</fx:resources>

非常感谢大家。