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

执行mvn dependency:analyze时出现文件无法处理错误求助

Maven dependency:analyze 无法处理项目类文件问题排查

问题场景

执行mvn dependency:analyze命令时,项目所有模块均出现"无法处理"自身类文件的提示,但项目编译、运行完全正常,无法定位原因。父pom.xml配置了maven.compiler.plugin.version=3.10.0,指定release=17,编译器参数为-Xlint:all。

环境信息

  • 操作系统:Win10 + Cygwin
  • JDK版本:17
  • Maven使用者:新手

执行命令及日志输出

$ mvn dependency:analyze -Dmaven.plugin.validation=VERBOSE
[INFO] 正在扫描项目...
[INFO]
[INFO] -------------------< org.jjazzlab:org-jjazz-phrase >--------------------
[INFO] 正在构建 Phrase 1.0-SNAPSHOT
[INFO]   来自 pom.xml
[INFO] --------------------------------[ nbm ]---------------------------------
[INFO]
[INFO] >>> dependency:2.8:analyze (default-cli) > test-compile @ org-jjazz-phrase >>>
[INFO]
[INFO] --- resources:3.3.1:resources (default-resources) @ org-jjazz-phrase ---
[INFO] 正在将1个资源从src\main\resources复制到target\classes
[INFO]
[INFO] --- compiler:3.10.0:compile (default-compile) @ org-jjazz-phrase ---
[INFO] 无需编译 - 所有类均为最新版本
[INFO]
[INFO] --- nbm:4.8:manifest (default-manifest) @ org-jjazz-phrase ---
[INFO] NBM插件生成清单文件
[INFO]
[INFO] --- resources:3.3.1:testResources (default-testResources) @ org-jjazz-phrase ---
[INFO] 跳过不存在的资源目录 D:\JeromeDocs\NetBeansProjects\JJazzLab\modules\Phrase\src\test\resources
[INFO]
[INFO] --- compiler:3.10.0:testCompile (default-testCompile) @ org-jjazz-phrase ---
[INFO] 无源代码需要编译
[INFO]
[INFO] <<< dependency:2.8:analyze (default-cli) < test-compile @ org-jjazz-phrase <<<
[INFO]
[INFO]
[INFO] --- dependency:2.8:analyze (default-cli) @ org-jjazz-phrase ---
无法处理: org.jjazz.phrase.api.CyclicPositions
无法处理: org.jjazz.phrase.api.Grid
无法处理: org.jjazz.phrase.api.NoteEvent$AsNoteKey
无法处理: org.jjazz.phrase.api.NoteEvent
无法处理: org.jjazz.phrase.api.Phrase$6
无法处理: org.jjazz.phrase.api.Phrase
无法处理: org.jjazz.phrase.api.Phrases
无法处理: org.jjazz.phrase.api.PhraseSamples
无法处理: org.jjazz.phrase.api.SizedPhrase
无法处理: org.jjazz.phrase.api.SourcePhrase
无法处理: org.jjazz.phrase.api.SourcePhraseSet
[WARNING] 发现已使用但未声明的依赖:
[WARNING]    com.google.guava:guava:jar:23.6-jre:compile
[WARNING] 发现已声明但未使用的依赖:
[WARNING]    org.jjazzlab:org-jjazz-guava:jar:1.0-SNAPSHOT:compile
[WARNING]    org.jjazzlab:org-jjazz-chordleadsheet:jar:1.0-SNAPSHOT:compile
[WARNING]    org.jjazzlab:org-jjazz-midi:jar:1.0-SNAPSHOT:compile
[WARNING]    org.netbeans.api:org-openide-dialogs:jar:RELEASE170:compile
[WARNING]    org.netbeans.api:org-openide-util:jar:RELEASE170:compile
[INFO] ------------------------------------------------------------------------
[INFO] 构建成功
[INFO] ------------------------------------------------------------------------
[INFO] 总耗时:  2.754 s
[INFO] 完成时间: 2023-05-21T16:24:36+02:00
[INFO] ------------------------------------------------------------------------
[WARNING]
[WARNING] 在4个插件中检测到插件验证问题
[WARNING]
[WARNING]  * org.apache.maven.plugins:maven-site-plugin:3.12.1
[WARNING]   插件问题:
[WARNING]    * 插件依赖已弃用的Maven 2.x兼容层,该层在Maven 4.x中可能不受支持
[WARNING]
[WARNING]  * org.apache.maven.plugins:maven-compiler-plugin:3.10.0
[WARNING]   声明位置:
[WARNING]    * org.jjazzlab:jjazzlab-parent:1.0-SNAPSHOT (C:\Users\Jerome\.m2\repository\org\jjazzlab\jjazzlab-parent\1.0-SNAPSHOT\jjazzlab-parent-1.0-SNAPSHOT.pom) @ 第35行
[WARNING]   在模块中使用:
[WARNING]    * org.jjazzlab:org-jjazz-phrase:1.0-SNAPSHOT (pom.xml)
[WARNING]   插件问题:
[WARNING]    * 插件应在`provided`作用域中声明以下Maven构件: [org.apache.maven:maven-plugin-api:3.2.5, org.apache.maven:maven-model:3.2.5, org.apache.maven:maven-core:3.2.5, org.apache.maven:maven-settings:3.2.5, org.apache.maven:maven-model-builder:3.2.5, org.apache.maven:maven-repository-metadata:3.2.5, org.apache.maven:maven-aether-provider:3.2.5, org.apache.maven:maven-settings-builder:3.2.5, org.apache.maven:maven-artifact:3.2.5]
[WARNING]
[WARNING]  * org.apache.netbeans.utilities:nbm-maven-plugin:4.8
[WARNING]   声明位置:
[WARNING]    * org.jjazzlab:org-jjazz-phrase:1.0-SNAPSHOT (pom.xml) @ 第16行
[WARNING]   在模块中使用:
[WARNING]    * org.jjazzlab:org-jjazz-phrase:1.0-SNAPSHOT (pom.xml)
[WARNING]   插件问题:
[WARNING]    * 插件依赖已弃用的Maven 2.x兼容层,该层在Maven 4.x中可能不受支持
[WARNING]    * 插件依赖plexus-container-default,该构件已停止维护(EOL)
[WARNING]   Mojo问题:
[WARNING]    * Mojo nbm:manifest (org.apache.netbeans.nbm.NetBeansManifestUpdateMojo)
[WARNING]      - 参数'localRepository'使用已弃用的参数表达式'${localRepository}':ArtifactRepository类型已弃用,应避免在Mojo中使用。
[WARNING]
[WARNING]  * org.apache.maven.plugins:maven-dependency-plugin:2.8
[WARNING]   声明位置:
[WARNING]    * 未知
[WARNING]   在模块中使用:
[WARNING]    * org.jjazzlab:org-jjazz-phrase:1.0-SNAPSHOT (pom.xml)
[WARNING]   插件问题:
[WARNING]    * 插件是Maven 2.x插件,在Maven 4.x中将不受支持
[WARNING]    * 插件依赖plexus-container-default,该构件已停止维护(EOL)
[WARNING]   Mojo问题:
[WARNING]    * Mojo dependency:analyze (org.apache.maven.plugin.dependency.analyze.AnalyzeMojo)
[WARNING]      - 实现了Plexus容器的`Contextualizable`接口,该接口已停止维护(EOL)。
[WARNING]
[WARNING]
[WARNING] 请通过调整插件配置或升级上述插件来修复报告的问题。如果没有可用升级,请告知插件维护者相关问题。
[WARNING] 如需查看更多或更少详情,请使用'maven.plugin.validation'属性,取值为(不区分大小写): [BRIEF, DEFAULT, VERBOSE]
[WARNING]

问题原因及解决办法

1. 核心原因

日志中明确显示使用的是maven-dependency-plugin:2.8,这个版本是Maven 2.x时期的旧插件,对JDK 17编译的字节码兼容性不足,无法正确解析项目自身的类文件,因此抛出"无法处理"的提示。

2. 解决步骤

  • 升级maven-dependency-plugin版本:在父pom.xml或模块pom.xml中添加/更新插件配置,使用支持JDK 17的最新稳定版本(推荐3.6.0及以上):
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.6.0</version>
            </plugin>
        </plugins>
    </build>
    
  • 重新执行mvn dependency:analyze命令,此时插件应该能正常解析类文件,依赖分析结果也会更准确。

3. 其他插件警告处理

日志中提到的maven-site-plugin、nbm-maven-plugin等的警告,属于插件兼容性提示,不影响当前dependency:analyze的问题。如果需要适配未来Maven 4.x版本,可以逐步升级这些插件到支持Maven 3.x的最新版本。

4. 依赖分析误报修正

旧版本插件可能会导致"已使用但未声明"或"已声明但未使用"的误报,升级插件后可重新确认依赖状态:

  • 对于com.google.guava:guava这类"已使用但未声明"的依赖,建议显式添加到pom.xml中,避免依赖传递带来的潜在问题;
  • 对于标注为"已声明但未使用"的依赖,可结合实际代码确认是否真的未使用,再进行清理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:12:06