自定义ant build和JavaFX

时间:2014-12-10 07:26:38

标签: java netbeans ant javafx-8

使用常规netbeans javaFX项目,开发人员可以执行以下操作   - 制作一个javaFX jar文件   - 在浏览器上用javaFX制作一个html   - 制作一个jnlp webstart

我希望使用ant build(netbeans IDE内部)实现相同的输出,但到目前为止我的成功仅限于javaFX jar文件,我想制作html文件和jnlp同时使用ant

我正在使用netbeans 8.0.2,我有一个标准的java库(非javaFX)项目,这个项目包含一个后端和两个前端SWING和javaFX,使用ant构建脚本我成功地生成了两个独立的和自我包含jar文件,它们是dssSWING.jar和dssJavaFX.jar,每个文件都能自行提取它们内部的数据库,并且每个都有第三方依赖项,这里是我用来生成两者的蚂蚁代码


<!--this build target is meant for building the AJAX SWING (web version) and the Desktop version-->    
<target name="_desktop_SWING_RedistributableSingleJarFile">
    <jar destfile="${basedir}/dss.jar">                    
        <zipgroupfileset dir="protected/lib" includes="h2-1.4.182.jar"/>               
        <zipgroupfileset dir="protected/lib" includes="commons-csv-1.0.jar"/>      
        <fileset dir="${basedir}/build/classes">
            <exclude name=".netbeans_automatic_build"/> 
            <exclude name=".netbeans_update_resources"/> 
            <exclude name="mobileView/**"/>
        </fileset>
        <fileset dir="protected/data" includes="dss.mv.db" />
        <fileset dir="img" >
            <exclude name="Thumbs.db"/>                  
        </fileset> 
        <manifest>
            <attribute name="Main-Class" value="desktopView.WelcomePage"/>
        </manifest>        
    </jar>
</target>

<!--this build target is meant for building the JavaFX version--> 
<target name="_desktop_javaFX_RedistributableSingleJarFile">
    <jar destfile="${basedir}/dss_javaFX.jar">        
        <zipgroupfileset dir="protected/lib" includes="h2-1.4.182.jar"/>             
        <zipgroupfileset dir="protected/lib" includes="commons-csv-1.0.jar"/>                        
        <zipgroupfileset dir="protected/lib" includes="jfxtras-labs-8.0-r4-20141129.090224-39.jar"/>          
        <fileset dir="${basedir}/build/classes">
            <exclude name=".netbeans_automatic_build"/> 
            <exclude name=".netbeans_update_resources"/> 
            <exclude name="desktopView/**"/>
        </fileset>        
        <fileset dir="protected/data" includes="dss.mv.db" />
        <fileset dir="img" >
            <exclude name="Thumbs.db"/>                  
        </fileset> 
        <manifest>
            <attribute name="Main-Class" value="mobileView.Main"/>
        </manifest>        
    </jar>
</target>

请不要告诉它进入javaFX项目(简单的方法),我想学习确切的ant脚本来生成嵌入javaFX jar文件的HTML文件以及jnlp文件< / p>

2 个答案:

答案 0 :(得分:1)

This website应该告诉您需要知道的一切,以及在ant部署任务中发生的事情,因此,它还包括指向您需要的所有ant任务和设置的链接。为了创建像jnlp等等的东西。

TL; DR,你与ant-javafx.jar交互,你'过载'(或者你在ant世界中称之为的任何东西)fx:deploy任务,设置一些属性,然后魔术发生。

如果你想看看netbeans如何处理.jnlp创建的细节,我将(最)相关的(3000行).xml文件上传到了http://pastebin.com/hRBpMuUG

的pastebin

希望有所帮助..祝你好运!

答案 1 :(得分:0)

TL; DR;的确,我已经成功生成了jnlp和html文件,确切的代码就是这样,这段代码输出java_DSS.jnlp,java_DSS.html,最后使其工作原来的javaFX jar文件必须在同一目录下


<fx:deploy width="100%" height="100%"
        outdir="web-dist" outfile="java_DSS" 
        offlineAllowed="true">
    <fx:info title="java DSS"/>
    <fx:application refid="java DSS"/>
    <fx:resources>
        <fx:fileset dir="${basedir}">
           <include name="dss_javaFX.jar"/>
        </fx:fileset>
    </fx:resources>
</fx:deploy>  

行结束我的努力变得浪费,javaFX webstart或HTML embed需要签名才能运行对数据库的写入/读取访问权限,我可以使用ant代码进行签名但我无效“keyStore”文件为了使其签名,签名过程也不接受使用<target>构建的jar文件,必须使用<fx:jar>构建才能工作,遗憾的是<fx:jar>不支持嵌入外部lib文件,你必须解压缩libs才能添加它们,TLDR

如果你想要自定义ant构建的javaFX jar,jnlp,html文件甚至不会打扰你会浪费很多时间。我浪费了6个小时尝试以无符号输出结束,无法在webstart或html嵌入模式下运行

我做的是构建ant javaFX jar文件,创建一个新的javaFX项目,并在那里添加了javaFX jar文件,使该项目的主类成为'launcher'我的javaFX jar文件,在5分钟内我有一个签名的jar ,jnlp和html,而不必将我的'main'项目转换为javaFX项目,简而言之,只需创建一个javaFX'启动器'项目而不是让你自己,netbeans将处理所有签名和复杂的东西