如何在Maven项目中使用badass-runtime-plugin生成JavaFX运行时镜像?
非模块化JavaFX Maven项目生成运行时镜像的解决方案
首先明确:badass-runtime-plugin是Gradle专属插件,Maven项目无法直接使用它。不过你有两个可行的方向来实现需求:
方案一:将项目迁移到Gradle
这是最贴合你原本需求的方式——直接使用badass-runtime-plugin。Gradle对JavaFX的支持很成熟,你可以:
- 引入Gradle的JavaFX插件,快速配置JavaFX依赖
- 按照插件文档配置badass-runtime-plugin,它原生支持非模块化应用打包运行时镜像,不需要额外处理模块声明
方案二:使用Maven版的替代插件(无需换构建工具)
Beryx团队提供了对应Maven的插件badass-jlink-maven-plugin,功能和Gradle版的badass-runtime-plugin类似,支持非模块化JavaFX应用生成运行时镜像。配置步骤如下:
- 在你的
pom.xml中添加插件配置:
<build> <plugins> <plugin> <groupId>org.beryx.jlink</groupId> <artifactId>badass-jlink-maven-plugin</artifactId> <version>2.28.0</version> <!-- 使用最新稳定版本 --> <executions> <execution> <phase>package</phase> <goals> <goal>jlink</goal> </goals> </execution> </executions> <configuration> <mainClass>你的主类全限定名</mainClass> <nonModular>true</nonModular> <!-- 标记当前为非模块化应用 --> <jlinkImageName>自定义镜像名称</jlinkImageName> <jlinkZipName>自定义镜像压缩包名称</jlinkZipName> <!-- 根据你的JavaFX依赖添加对应模块 --> <addModules> <module>javafx.controls</module> <module>javafx.fxml</module> </addModules> </configuration> </plugin> <!-- 配合收集依赖jar包,供插件处理模块依赖 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.6.1</version> <executions> <execution> <id>copy-dependencies</id> <phase>prepare-package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/dependency-jars</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build>
- 执行Maven命令:
mvn package,插件会自动处理非模块化应用的模块依赖,生成包含JavaFX运行时的镜像包。
内容的提问来源于stack exchange,提问作者Nessarose
相关产品推荐
相关产品推荐

