add-exports VM选项的替代方案 可通过Maven或module-info实现吗
解决方案
为什么module-info.java无法实现需求
--add-exports 是JVM层面的启动参数,作用是在运行/编译时强制覆盖第三方依赖模块的导出规则。你自己项目的module-info.java只能定义当前模块的导入、导出权限,无权修改javafx.base这类第三方模块的内置导出规则,所以在你的模块声明中写对应exports语句不会生效。
可落地的Maven配置方案
直接通过Maven插件将需要的VM参数纳入pom.xml管理,所有拉取代码的开发者不需要手动修改IDE配置即可生效:
- 编译阶段配置:如果编译时就需要用到导出的内部包,配置
maven-compiler-plugin<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <release>12</release> <compilerArgs> <arg>--add-exports</arg> <arg>javafx.base/com.sun.javafx.binding=com.jfoenix</arg> <!-- 其余需要的--add-exports参数按相同格式依次添加即可 --> </compilerArgs> </configuration> </plugin> - 运行阶段配置:如果使用
mvn exec:java启动项目,配置exec-maven-plugin<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.1.0</version> <configuration> <mainClass>替换为你项目的主类全限定名</mainClass> <commandlineArgs>--add-exports javafx.base/com.sun.javafx.binding=com.jfoenix</commandlineArgs> <!-- 多个VM参数用空格分隔依次添加即可 --> </configuration> </plugin>
配置完成后刷新Maven项目,IDEA等主流IDE会自动识别上述参数,不需要开发者手动修改运行配置的VM选项。
内容的提问来源于stack exchange,提问作者Helge
相关产品推荐
相关产品推荐

