Maven和JavaFX, TwitterFX POM的故事

JavaOne演示

我们的JavaOne 2009技术演示ts - 4388是一个集成了Maven、JavaFX、Artifactory和WebStart在一个顺利的过程中,开发商和网站运营经理。
因此,我们一直在寻找一个不错的JavaFX演示,其中包含使用外部Java依赖项的源代码,这将演示在使用Java库时使用Maven的便利性。从JavaFX应用程序竞赛从一些推特新闻中我们尝试过TwitterFX
我们立即对这个应用程序的UI质量和光滑印象深刻:太棒了!
所以我们检查了源代码,我们看到了Maven在这个项目中的必要性。所有依赖的罐子都包含在颠覆(420万个项目中有310万个jar: 74%),而且Netbeans生成的构建脚本对于没有IDE的用户来说很难维护。管理没有NetBeans的Hudson构建几乎是不可能的。

JavaFX和Maven

我们寻找java开发人员已经尝试过合并这两种技术,但发现很少有人真正成功。我们正在寻找一个干净的集成与最小的POM配置。

  1. 对于编译JavaFX代码,我们发现:
  2. 要生成JNLP文件WebStart插件工作正确,但它使对外部jar的引用扁平化。这意味着所有依赖的jar文件都会被复制与应用程序的jar相同的文件夹。我们希望在最终用户中避免重复的jarWebStart缓存,所以我们喜欢用maven存储库用于引用jar的布局格式。

因此,我们编写了2个Maven插件:

    1. JavaFX编译器Maven插件:编译javafx源文件而不干扰java编译器。它激活了javafxcAnt任务使用Maven模型填充类路径和其他参数。
    2. JNLP生成器Maven插件插件将激活Velocity,从主模板和所有Maven模型数据(您的项目信息),特别是Maven运行时依赖项中生成JNLP文件。生成的JNLP文件将由Maven自动分发。

我们首先在只依赖于JavaFX平台的小型演示中使用了它们,然后我们使用它们来“Mavenize”TwitterFX代码库。
所以,在这里是TwitterFX的Maven版本的源代码。在这张支票里有没有瓶子在Subversion中,没有任何一只蚂蚁构建脚本,以及没有类路径.在那里500行Ant代码(XML和属性文件,由NetBeans管理和生成),在POM文件中变成了200行(可以更小)。主要区别在于POM文件是可读和可维护的。
要构建它,你需要java6、Maven 2.0.9或以上版本(推荐2.1)并运行“mvn -Pjfrog install”。
今天我们仍然有一个问题:不能同时创建Maven和JavaFX项目内部NetBeans (NetBeans: Maven + JavaFX项目?- Java Posse | Google Groups).

部署应用程序

的修改版本Artifactory我们正在管理WebStart对JNLP和jar文件的请求。这个扩展提供代码库基于服务器设置修改JNLP文件属性,并对主文件进行动态签名jar以及它的依赖性。如果您部署了JNLPapplet你甚至可以直接从Artifactory预览!

使用Maven 2存储库布局来引用第三方jar允许最终用户WebStart缓存重用依赖的jar URL。避免用户重新下载常见的jar文件javafx例如,javafx.com演示文件全部上传这个服务器的根目录!