Maven和JavaFX, TwitterFX POM的故事
JavaOne演示
我们的JavaOne 2009技术演示ts - 4388是一个集成Maven, JavaFX, Artifactory和WebStart在一个顺利的过程为开发商和网站运营经理。
因此,我们正在寻找一个不错的JavaFX演示,其中包含使用外部Java依赖关系的源代码,它将演示使用Java库时Maven的易用性。从JavaFX应用程序竞赛从一些推特新闻中我们尝试了TwitterFX.
我们立即对这个应用程序的UI质量和流畅印象深刻:太棒了!
所以我们检查了源代码,我们看到了Maven在这个项目中的必要性。所有依赖的jar都包含在其中颠覆(在一个420万的项目中有310万的jar: 74%),并且由Netbeans生成的构建脚本很难为没有IDE的用户维护。在没有NetBeans的情况下管理Hudson构建几乎是不可能的。
JavaFX和Maven
我们在寻找java已经尝试合并这两种技术的开发人员发现,实际上很少有人成功。我们正在寻找一个简洁的集成与最小的POM配置。
- 对于编译JavaFX代码,我们发现:
- 一个过时的Plexus JavaFX编译插件它取代了java编译器。问题是我们不能混合java而且javafx代码在同一个项目中。
- 你也可以使用antrun插件激活javafxc来自Maven的Ant任务。配置非常冗长,与Maven模型的集成非常少。
- 对于生成JNLP文件,WebStart插件工作正确,但它正在扁平化对外部jar的引用。这意味着复制所有依赖的jar在与应用程序的jar相同的文件夹。我们希望避免在最终用户中复制jarWebStart缓存,所以我们喜欢用maven存储库用于引用jar的布局格式。
因此,我们编写了2个Maven插件:
-
- JavaFX编译器Maven插件:编译javafx源文件,而不干扰java编译器。它激活了javafxcAnt任务使用Maven模型填充类路径和其他参数。
- JNLP生成器Maven插件:插件将激活Velocity,从主模板和所有Maven模型数据(您的项目信息),特别是Maven运行时依赖项中生成一个JNLP文件。生成的JNLP文件将由Maven自动分发。
我们首先在只依赖于JavaFX平台的小演示中使用它们,然后使用它们“Mavenize”TwitterFX代码库。
所以,在这里是TwitterFX Maven版本的源代码。在这张支票里有没有瓶子在Subversion中,没有任何一只蚂蚁构建脚本,并且没有类路径.在那里是500行Ant代码(由NetBeans管理和生成的XML和属性文件),在POM文件中变成了200行(可以小得多)。主要的区别是POM文件是可读的和可维护的。
要建造它,你需要java6、Maven 2.0.9或以上(推荐2.1)并运行“mvn -Pjfrog install”。
我们今天仍然有一个问题:不可能创建一个Maven和JavaFX项目内部NetBeans (NetBeans: Maven + JavaFX项目?- Java Posse |谷歌组).
部署应用程序
在一个修改过的版本Artifactory我们正在管理面向JNLP和jar文件的WebStart请求。这个扩展提供了代码库基于服务器设置的JNLP文件属性修改,以及主动态签名jar以及它的依赖关系。如果您部署了JNLPapplet你甚至可以直接从Artifactory预览它!
使用Maven 2存储库布局引用第三方jar允许最终用户WebStart缓存重用依赖的jar URL。避免用户重新下载普通jar之间javafx示例,javafx.com演示文件全部上传在此服务器的根目录!
