特定于JavaFX Maven平台的内部版本:mac aarm64限定符

syqv5f0l  于 2023-01-08  发布在  Maven
关注(0)|答案(1)|浏览(352)

我正在使用Maven构建我的JavaFX应用程序,如下所示:
pom.xml中定义的依赖项:

<dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>${javafx.version}</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>${javafx.version}</version>
    </dependency>

Maven构建命令:

mvn package -Djavafx.platform=mac

这将在跨平台构建时设置平台限定符。以下Maven分类器可用:

win,mac,linux

(See https://openjfx.io/openjfx-docs/“跨平台”)
现在如果我用mac分类器构建,然后尝试用aarch64 JRE执行,这就不起作用了。显然mac分类器指定了mac x64体系结构,这不适合aarch64 JRE。
我可以为mac指定aarch64的依赖版本吗?

h43kikqp

h43kikqp1#

这个question解决了一个类似的问题,但现在有点过时了,因为从JavaFX 17开始添加了macOS AArch64支持。
在JavaFX 17之前,javafx.pomparent pom包含以下Maven配置文件:

  • linuxjavafx.platform=linux
  • 使用javafx.platform=macmacosx
  • windowsjavafx.platform=win
  • 以及带有javafx.platform=${javafx.platform}的自定义配置文件javafx.platform.custom

由于支持新的体系结构,并且从JavaFX 17开始,parent pom包含以下Maven配置文件:

  • linux-x86_64javafx.platform=linuxjavafx.platform=linux-monocle配合使用
  • linux-aarch64javafx.platform=linux-aarch64javafx.platform=linux-aarch64-monocle结合使用
  • linux-arm32javafx.platform=linux-arm32-monocle
  • x1米17英寸与x1米18英寸或x1米19英寸
  • macosx-aarch64javafx.platform=mac-aarch64javafx.platform=mac-aarch64-monocle配合使用
  • windows-x86_64javafx.platform=winjavafx.platform=win-monocle配合使用
  • 个1米26英寸1x与个1米27英寸1x或个1米28英寸1x
  • 以及带有javafx.platform=${javafx.platform}的自定义配置文件javafx.platform.custom

因此,如果您要进行仅包含macOS AArch64依赖项的跨平台构建,您只需:

mvn package -Djavafx.platform=mac-aarch64

当然,这只适用于Gluon发布到Maven Center的JavaFX工件,而不适用于其他发行版(JavaFX SDK或捆绑在Java SDK中)。
注意:这些配置文件有一个monocle替代选项,如果您在pom中包含javafx.monocle属性,则可以激活该选项:

<javafx.monocle>true</javafx.monocle>

这允许使用带有或不带有monocle(用于嵌入式系统的JavaFX的Glass窗口组件的实现)的JavaFX工件,就像您从https://gluonhq.com/products/javafx/下载SDK一样。例如,如果您在没有窗口管理器的情况下在Raspberry Pi的命令行上运行,这将非常有用。

相关问题