You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行JavaFX应用后Maven报“Plugin validation issues”的原因及解决方法

问题描述

我用IntelliJ IDEA 2023.2 RC自带的JavaFX模板创建了新的JavaFX/OpenJFX项目,Java和JavaFX版本都是20。在IntelliJ的Maven面板里选Plugins > javafx > javafx:run运行应用,退出后控制台弹出以下警告:

[WARNING] 
[WARNING] Plugin validation issues were detected in 2 plugin(s)
[WARNING] 
[WARNING]  * org.openjfx:javafx-maven-plugin:0.0.8
[WARNING]  * org.apache.maven.plugins:maven-resources-plugin:3.3.0
[WARNING] 
[WARNING] For more or less details, use 'maven.plugin.validation' property with one of the values (case insensitive): [BRIEF, DEFAULT, VERBOSE]
[WARNING] 

这些警告只在退出应用后显示。我想知道这些警告是什么意思,怎么解决?

另外,javafx-maven-plugin已经是最新版,maven-resources-plugin是3.3.0,只比最新版3.3.1旧一点,我觉得版本不是问题。按照警告提示,我在POM里定义了maven.plugin.validation属性,但没效果,控制台没显示更多细节:

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.plugin.validation>VERBOSE</maven.plugin.validation>
    </properties>

我找了相关问题但答案都不适用,网页搜索也没找到有用信息。修改后的完整POM内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>work.basil.voters</groupId>
    <artifactId>voters_wa</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>Voters WA</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.plugin.validation>VERBOSE</maven.plugin.validation>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>20</version>
        </dependency>

        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>20</version>
        </dependency>

        <dependency>
            <groupId>org.controlsfx</groupId>
            <artifactId>controlsfx</artifactId>
            <version>11.1.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.10.0</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.11.0</version>
                <configuration>
                    <source>20</source>
                    <target>20</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.openjfx</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>0.0.8</version>
                <executions>
                    <execution>
                        <!-- Default configuration for running with: mvn clean javafx:run -->
                        <id>default-cli</id>
                        <configuration>
                            <mainClass>work.basil.voters.voters_wa/work.basil.voters.voters_wa.HelloApplication</mainClass>
                            <launcher>app</launcher>
                            <jlinkZipName>app</jlinkZipName>
                            <jlinkImageName>app</jlinkImageName>
                            <noManPages>true</noManPages>
                            <stripDebug>true</stripDebug>
                            <noHeaderFiles>true</noHeaderFiles>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
警告含义与解决方法

警告含义

这些警告是Maven的插件校验机制触发的,说明这两个插件不符合当前Maven版本的规范要求——比如使用了已过时的API、依赖了不再维护的库,或者未适配Maven最新的插件开发标准。这类警告一般不会影响项目运行,只是Maven在提醒你插件存在潜在的兼容性风险。

至于你设置maven.plugin.validation=VERBOSE没生效,大概率是因为通过IntelliJ的Maven面板触发命令时,IDE没有把这个属性传递给Maven进程。

解决方法

1. 查看详细警告信息

不要通过IntelliJ的Maven面板运行,改用终端执行命令:

mvn javafx:run -Dmaven.plugin.validation=VERBOSE

这样就能看到具体的校验问题细节,比如哪个API过时、哪里不符合规范,方便针对性处理。

2. 处理maven-resources-plugin的警告

虽然版本差距小,但升级到最新版3.3.1确实能解决大部分校验问题。直接在POM的<build><plugins>里显式声明这个插件的最新版本:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.3.1</version>
</plugin>

Maven默认会继承父POM的插件版本,显式声明可以覆盖默认版本,避免旧版带来的警告。

3. 处理javafx-maven-plugin的警告

这个插件的0.0.8确实是最新稳定版,它的校验警告一般是因为还没适配Maven最新的插件API规范。目前没有更新版本可以解决,你可以:

  • 忽略警告:毕竟不影响项目运行,等插件官方更新后再升级。
  • 尝试快照版:如果官方有正在开发的快照版,可能修复了校验问题,但快照版稳定性不如稳定版,需谨慎使用。

4. 临时禁用插件校验

如果实在不想看到这些警告,可以在POM里把校验级别设为NONE:

<properties>
    <maven.plugin.validation>NONE</maven.plugin.validation>
</properties>

不过这只是隐藏警告,没有解决根本问题,不推荐长期使用。

内容的提问来源于stack exchange,提问作者Basil Bourque

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 07:48:18