2012年12月16日日曜日

Java FX アプリケーション用のantビルドファイル

Java FXの実行ファイルを作るのに、ビルドファイルをどう書けばいいのか悩んでたけど、解決した。

こちらのサイトで紹介されていたコードを改造した。

JavaFX プロジェクトの実行可能 Jar ファイルを作成する with Apache Ant

jdk1.7になって以前とパスが変わったようなので、その辺も少し修正。環境変数はこんなかんじ。

JAVA_HOME C:\Program Files\Java\jdk1.7.0_07

で、build.xmlはこんなかんじ。

 
<project name="JavaFXProject" basedir="." default="pack" xmlns:fx="javafx:com.sun.javafx.tools.ant">

    <property environment="env" />
    <property name="javafx.tools.ant.jar" value="${env.JAVA_HOME}/lib/ant-javafx.jar" />

    <property name="src" location="src/main/java" />
    <property name="dest" location="build/classes/main" />
    <property name="jardest" location="build/libs" />
    
    <property name="app.vendor" value="com.fb" />
    <property name="app.id" value="fxtest01" />
    <property name="app.name" value="FXTest01" />
    <property name="app.version" value="1.0" />
    <property name="app.main-class" value="com.fb.fxtest.FXTest01" /> 

    <taskdef resource="com/sun/javafx/tools/ant/antlib.xml" uri="javafx:com.sun.javafx.tools.ant" classpath="${javafx.tools.ant.jar}"/>

    <target name="clean">
        <delete dir="build" />
    </target>

    <target name="compile" depends="clean">
        <mkdir dir="${dest}" />
        <javac srcdir="${src}" destdir="${dest}" classpath="${env.JAVA_HOME}/jre/lib/jfxrt.jar" />
        <copy todir="${dest}">
            <fileset dir="${src}" includes = "**/*.fxml" />
        </copy>
    </target>

    <target name="pack" depends="compile">
        <fx:application id="app-info" name="${app.name}" mainClass="${app.main-class}" />
    
        <fx:jar destfile="${jardest}/${app.id}.jar">
            <fx:application refid="app-info"/>
            <manifest>
                <attribute name="Implementation-Vendor" value="${app.vendor}"/>
                <attribute name="Implementation-Title" value="${app.name}"/>
                <attribute name="Implementation-Version" value="${app.version}"/>
            </manifest>
            <fileset dir="${dest}"/>
        </fx:jar>
    </target>
        
</project>

使用したサンプルデータはこちら。

fxtest01.zip

0 件のコメント:

コメントを投稿