使用 Ivy 下载 JavaFX 依赖项

tre*_*esf 5 java maven-2 javafx ivy maven-central

我希望使用 Ivy 从 Maven Central 获取 JavaFX。

这可以获取 Java 依赖项,但不能获取本机依赖项。

预期的:

  • javafx-graphics-21.0.1.jar
  • javafx-graphics-21.0.1-linux.jar

实际的:

  • javafx-graphics-21.0.1.jar
  • 丢失的 javafx-graphics-21.0.1-linux.jar

我如何获取原生组件?

ivy.xml

<ivy-module version="2.0" xmlns:m="https://ant.apache.org/ivy/maven">
    <info organisation="org.my" module="my-proj"/>
    <dependencies>
        <dependency org="org.openjfx" name="javafx-graphics" rev="21.0.1" />
    </dependencies>
</ivy-module>
Run Code Online (Sandbox Code Playgroud)
ivy && ls ~/.ivy2/cache/org.openjfx/javafx-graphics/jars
# javafx-graphics-21.0.1.jar
Run Code Online (Sandbox Code Playgroud)

这是POM:https://repo1.maven.org/maven2/org/openjfx/javafx/20.0.1/javafx-20.0.1.pom

相关:如何使 Maven 在 linux 上请求正确的 javafx 依赖项

我添加maven-2标签是因为Ivy 使用 Maven 2 存储库

在没有特定设置的情况下,Ivy 使用 Maven 2 存储库来解析您在 Ivy 文件中声明的依赖项。

tre*_*esf 5

  1. 首先从POM中获取javafx.platform原生组件的值。
  2. 确保ivy.xml配置为使用正确的xmlns:m.
  3. 添加m:classifier="linux"(或linux-aarch64mac-aarch64等)。
  4. 本机平台 jar 应显示在.ivy2/cache

ivy.xml

<ivy-module version="2.0" xmlns:m="https://ant.apache.org/ivy/maven">
    <info organisation="org.my" module="my-proj"/>
    <dependencies>
        <dependency org="org.openjfx" name="javafx-graphics" rev="21.0.1" />
        <dependency org="org.openjfx" name="javafx-graphics" rev="21.0.1" m:classifier="linux"/>
    </dependencies>
</ivy-module>
Run Code Online (Sandbox Code Playgroud)
ls ~/.ivy2/cache/org.openjfx/javafx-graphics/jars
# javafx-graphics-21.0.1.jar
# javafx-graphics-21.0.1-linux.jar
Run Code Online (Sandbox Code Playgroud)