使用常规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>
答案 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将处理所有签名和复杂的东西