One*_*ree 43 java javafx maven
我正在设置一个maven项目,即将使用JavaFX.由于我听说JavaFX没有附带所有版本的Java,我下载并将jfxrt.jar文件放在lib项目的目录中.
1)如何指定不应下载依赖项(即JavaFX),但是哪个位于lib?
2)这是否意味着项目可以在任何具有JDK的机器上构建(而不是必需的JDK 1.7 - 更新9+)?
jew*_*sea 67
建议的方法
使用Maven构建JavaFX应用程序:
与Java 7不同,使用Java 8时,不必将JavaFX设置为maven依赖项,因为JavaFX位于标准的Java运行时类路径上(类似于今天的Swing方式).
意见
我认为将jfxrt.jar文件放在项目lib目录中的方法存在缺陷.
它有缺陷的原因是:
jfxrt.jar能够找到它们的位置).lib目录中的JavaFX运行时可能无法用于以后的JDK版本,例如JDK 8.lib目录中的版本发生冲突.总之,JavaFX应该被视为Java运行时系统的一部分,而不是项目库.
JavaFX系统依赖示例
如果您必须使用Java 7并且不想使用JavaFX maven插件,那么您可以采用不太推荐的方法:
lib目录)引用JavaFX库作为maven系统依赖项.此示例仅针对Java 7提供,对于Java 8不是必需的(并且不会按原样工作).Java 8将jfxrt.jar放在$ {java.home} /lib/ext/jfxrt.jar中,这是在默认的Java运行时类路径上,使Java 8的系统依赖性无关紧要.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.openjfx</groupId>
<artifactId>hellofx</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>demo</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>12.0.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.2</version>
<configuration>
<mainClass>HelloFX</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
如果使用这样的系统依赖关系打包应用程序,那么您需要为用户编写一些执行指令,以便在Java 7上运行应用程序时可以将jfxrt.jar添加到运行时类路径中.这是非常好的不使用这种方法的原因.
如果您选择使用maven系统依赖方法,您可能还希望使用maven antrun插件来嵌入对JavaFX ant任务的调用,如本示例所示.您可能还希望使用maven enforcer插件来确保您的应用程序至少针对包含应用程序所需的JavaFX版本的Java所需的最低版本构建.
| 归档时间: |
|
| 查看次数: |
41002 次 |
| 最近记录: |