Maven配置JavaFX虚拟键盘JVM参数致构建失败求助
问题根源分析
你犯了一个常见的混淆错误:把JVM运行时参数放到了maven-compiler-plugin的编译参数配置里!
compilerArgs是给javac编译器用的参数(比如-Xlint这类编译检查选项),而-D开头的参数是JVM启动时才会生效的运行时参数,编译阶段根本不认识这些-D参数,所以才会抛出“invalid flag”的错误。而Eclipse里直接通过“Run as -> Java Application”启动项目时,你配置的是JVM启动参数,自然能正常工作——这是两个完全不同的环节哦。
正确配置方案
根据你的需求,分两种场景给出正确的Maven配置:
场景1:用Maven直接运行JavaFX项目
使用exec-maven-plugin来配置JVM运行参数,这个插件专门负责在Maven生命周期里启动Java程序。把下面的配置添加到你的POM中:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.1.0</version> <configuration> <!-- 替换成你的JavaFX主类全限定名 --> <mainClass>com.yourpackage.YourMainClass</mainClass> <jvmArgs> <jvmArg>-Dcom.sun.javafx.isEmbedded=true</jvmArg> <jvmArg>-Dcom.sun.javafx.virtualKeyboard=javafx</jvmArg> </jvmArgs> </configuration> </plugin>
之后运行项目的命令是:
mvn exec:java
场景2:在测试阶段启用虚拟键盘参数
如果需要在运行测试用例时启用这些参数,就配置maven-surefire-plugin:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.1.2</version> <configuration> <argLine> -Dcom.sun.javafx.isEmbedded=true -Dcom.sun.javafx.virtualKeyboard=javafx </argLine> </configuration> </plugin>
执行测试时,Maven会自动把这些参数传递给测试用例的JVM进程。
内容的提问来源于stack exchange,提问作者Saminda Peramuna
相关产品推荐
相关产品推荐

