`mvn package`未触发依赖复制,排查maven-dependency-plugin执行异常原因
问题:Maven依赖插件执行任务不触发的排查方向
我有一个基于LWJGL的项目,希望把所需jar包和本地库复制到生成jar的输出目录,且不将依赖打包进最终jar。手动执行mvn package和mvn dependency:copy-dependencies都正常,但给maven-dependency-plugin添加绑定到prepare-package阶段的执行配置后,执行mvn package只生成jar,既不复制依赖,也没有插件执行日志。尝试绑定到package、validate、test等阶段也无效。
项目pom.xml仅包含少量插件:maven-clean-plugin、maven-resources-plugin、maven-compiler-plugin、maven-jar-plugin(带清单配置)、maven-install-plugin、maven-dependency-plugin,同时有3个用于选择LWJGL本地库的profile,通过lwjgl-natives属性选择依赖。
可能导致任务不触发的情况:
- 插件配置层级错误:检查
maven-dependency-plugin的执行配置是否放在<build><plugins><plugin>标签内,若仅在<pluginManagement>中定义,插件不会自动执行,需要在<plugins>节点下再次声明插件并绑定执行逻辑。 - Profile未激活:如果LWJGL依赖仅在特定profile中定义,执行
mvn package时未激活对应profile,插件找不到需复制的依赖,会静默跳过执行。可通过mvn package -P<profile-id>显式激活,或检查profile的自动激活规则是否生效。 - 依赖范围被过滤:
copy-dependencies默认仅复制compile、runtime范围的依赖,若LWJGL依赖(尤其是本地库)被标记为provided或test范围,插件会忽略这些依赖。需在插件配置中添加<includeScope>runtime</includeScope>(或匹配实际范围),或显式包含目标依赖。 - 插件版本兼容问题:使用的
maven-dependency-plugin版本过旧,可能存在阶段绑定的兼容性bug。可指定稳定新版本(如3.6.1),避免使用Maven默认的旧版本。 - 路径配置格式错误:
outputDirectory中的换行、多余空格可能导致路径解析失败,插件无法创建目标目录而静默终止。可将路径写成单行:<outputDirectory>${project.build.directory}/libs</outputDirectory>。 - 全局跳过参数影响:执行
mvn package时若附带-Dmaven.dependency.skip=true等参数,或settings.xml中有全局跳过依赖插件的配置,会直接跳过该执行任务。检查命令行参数和全局配置。 - 执行ID冲突:若项目中其他地方定义了ID为
copy-dependencies的插件执行,会覆盖当前配置。可修改执行的<id>为唯一值,比如copy-lwjgl-dependencies。
内容的提问来源于stack exchange,提问作者Valerie Thiesent
相关产品推荐
相关产品推荐

