Maven执行javafx:jlink时如何指定自定义module-path路径?
解决步骤
你遇到的问题是javafx-maven-plugin默认从Maven本地仓库读取依赖,不会主动识别target/modules下你用ModiTect处理过的带模块声明的jar包,按以下方式修改配置即可:
1. 调整javafx-maven-plugin配置
给javafx-maven-plugin新增<modulePath>参数,将target/modules路径放在最前面,优先级高于Maven默认依赖路径,修改后的插件配置如下:
<plugin> <groupId>org.openjfx</groupId> <artifactId>javafx-maven-plugin</artifactId> <version>${javafx.maven.plugin.version}</version> <configuration> <mainClass>${mainClass}</mainClass> <launcher>launcher</launcher> <jlinkImageName>BRM</jlinkImageName> <!-- 新增模块路径配置,优先读取target/modules下处理过的jar --> <modulePath> ${project.build.directory}/modules${path.separator} ${project.build.directory}/classes </modulePath> </configuration> </plugin>
其中${path.separator}是Maven内置属性,会自动适配Windows系统的分号分隔符和Linux/macOS系统的冒号分隔符,保证跨平台可用。
2. 验证执行顺序
你当前已经将ModiTect插件的执行绑定到generate-resources阶段,早于javafx:jlink默认执行的package阶段,执行顺序无需调整。
修改完成后执行mvn clean javafx:jlink即可正常构建镜像,不会再抛出自动模块无法用于jlink的错误。
内容的提问来源于stack exchange,提问作者Tom Clabault
相关产品推荐
相关产品推荐

