作为Maven依赖关系的JavaFX 2
是否有可能在Maven中的pom.xml中将JavaFX 2.0引用为依赖项,以便一切顺利进行?作为Maven依赖关系的JavaFX 2
我this question有可能在本地安装jfxrt.jar看到的,但最好我想一个简单的方法,把依赖可以得到妥善解决,没有任何地方黑客下载....
不,这种解决方案暂时不存在。我怀疑它会永远,因为从Java 1.7更新2开始,JavaFX与JVM一起安装。从Java 1.8(明年)开始,计划将JavaFX包含在JRE中。从此,你根本不需要依赖。
但是现在已经可以使用Maven与JavaFX了,因为Maven可以调用Ant任务(antrun插件),并且JavaFX发行版中提供了超级Ant任务。我在博客上发帖,但是用法文:Creer un projet Maven pour JavaFX2。它会引导您完成整个过程。尽管如此,如果您不懂法语,请对文章发表评论,我会尽力帮助您或在此处查看the Oracle forum
谢尔盖的文章建议将javafx作为系统依赖项添加,这不应该是用过的。相反,您可以在POM中包含以下内容来自动安装javafx。
<profile>
<id>install-javafx</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>install-javafx</id>
<goals>
<goal>install-file</goal>
</goals>
<phase>validate</phase>
<configuration>
<file>${jfx-runtime}/lib/jfxrt.jar</file>
<groupId>javafx</groupId>
<artifactId>javafx</artifactId>
<version>${jfx-version}</version>
<packaging>jar</packaging>
<javadoc>${jfx-runtime}/../docs/api.zip</javadoc>
<!--<sources>no source available</sources>-->
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>install-javafx-bin</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${settings.localRepository}/javafx/javafx</outputDirectory>
<useBuildFilters>false</useBuildFilters>
<resources>
<resource>
<directory>${jfx-runtime}</directory>
<includes>
<include>bin/*.dll</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
如果您想安装api文档,请将docs/api文件夹的内容压缩到docs/api.zip。现在,您只需运行maven,并激活配置文件并设置jfx-runtime和jfx-version属性。
第一我已经看到了这个解决方案,并且相信这是做到这一点的正确方法。希望这是最主张的方式。你如何建议我们处理'$ {jfx-runtime}'和'$ {jfx-version}'。只需在'
我有属性中的硬编码版本,因为那样我可以在依赖关系中重用它。运行时路径不应该被硬编码,因为它取决于平台。 – Cephalopod 2012-07-03 07:36:18
这是避免系统依赖的典型“正确”/认可方式。这也是*典型的怪异复杂的方式(以避免系统依赖) – javadba 2015-08-11 03:47:39
这里是一个可能的解决方案。
在您的项目目录中创建一个lib
文件夹,并将jfxrt.jar放入该目录中。
<dependency>
<groupId>com.oracle</groupId>
<artifactId>javafx</artifactId>
<version>2.2.3</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/jfxrt.jar</systemPath>
</dependency>
如果你想建立一个可执行的JAR,你只需要包含javafx-maven-plugin
。欲了解更多信息,请参见:link-to-github
<plugin>
<groupId>com.zenjava</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>1.3</version>
<configuration>
<mainClass>[put your application main class here]</mainClass>
</configuration>
</plugin>
我使用java.home而不是project.basedir,这意味着我不需要将jfxrt.jar放入我的项目中。 – disrvptor 2014-01-15 02:29:35
添加到这个已经很好的答复,我只是想指出亚当边的帖子:http://www.adam-bien.com/roller/abien/entry/how_to_compile_java_fx – 2012-06-27 15:58:54