如何使用Ivy从Maven Central获取JavaFX本地依赖?
如何用Ivy从Maven Central获取JavaFX的本地平台依赖
问题现状
当前配置可获取JavaFX的通用jar包,但无法拉取对应Linux平台的本地组件:
- 预期获取文件:
javafx-graphics-21.0.1.jarjavafx-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>
执行命令及结果
ivy && ls ~/.ivy2/cache/org.openjfx/javafx-graphics/jars # javafx-graphics-21.0.1.jar
解决方案
JavaFX的平台相关组件通过Maven分类器(classifier)区分,Ivy默认不会自动拉取带分类器的依赖,需显式指定分类器参数。修改ivy.xml中的依赖配置,添加m:classifier属性指定目标平台:
<ivy-module version="2.0" xmlns:m="https://ant.apache.org/ivy/maven"> <info organisation="org.my" module="my-proj"/> <dependencies> <!-- 通用jar包 --> <dependency org="org.openjfx" name="javafx-graphics" rev="21.0.1" /> <!-- Linux平台本地组件 --> <dependency org="org.openjfx" name="javafx-graphics" rev="21.0.1" m:classifier="linux" /> </dependencies> </ivy-module>
若需适配多平台,可分别添加对应分类器的依赖:
<dependency org="org.openjfx" name="javafx-graphics" rev="21.0.1" m:classifier="win" /> <dependency org="org.openjfx" name="javafx-graphics" rev="21.0.1" m:classifier="mac" />
重新执行命令后,缓存目录中即可看到对应平台的jar文件。
注:Ivy默认使用Maven 2仓库,无需额外配置即可从Maven Central拉取带分类器的依赖。
内容的提问来源于stack exchange,提问作者tresf
相关产品推荐
相关产品推荐

