Maven多模块项目配置dependency:tree插件后执行命令报错如何解决?
问题原因
- 调用命令不符合Maven规范:
tree既不是Maven内置的生命周期阶段,也不是符合插件前缀:目标格式的插件目标调用,Maven无法识别该指令 - 配置的
java-srcprofile默认未激活:配置里设置了<activeByDefault>false</activeByDefault>,如果运行命令时不主动激活该profile,对应的插件配置不会生效 - 插件执行绑定到了
compile阶段:现有配置是把tree目标绑定到了compile生命周期,只有触发compile阶段时才会自动执行该目标,无法通过直接调用tree指令触发
解决方案
方案1:直接调用插件目标并激活指定profile
不需要修改现有pom配置,直接执行如下命令即可:
mvn -Pjava-src org.apache.maven.plugins:maven-dependency-plugin:3.2.0:tree
也可以用插件前缀简化命令:
mvn -Pjava-src dependency:tree
执行后依赖树会自动输出到你配置的${project.build.directory}/alternateLocation目录下。
方案2:触发compile阶段自动执行
因为你已经把tree目标绑定到了compile阶段,主动激活profile并执行compile阶段即可自动生成依赖树:
mvn -Pjava-src compile
该命令会执行完整的compile生命周期,同时完成依赖树的生成输出。
方案3:调整配置支持简化调用(可选)
如果你希望可以直接用更短的命令触发,可修改pom配置:
- 如果需要profile默认激活,把
<activeByDefault>false</activeByDefault>改成<activeByDefault>true</activeByDefault> - 也可以直接在plugin的全局configuration下配置输出目录,不需要绑定到execution:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.2.0</version> <configuration> <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory> </configuration> </plugin>
改完后直接执行mvn dependency:tree即可将依赖树输出到指定目录。
内容的提问来源于stack exchange,提问作者Utkarsh Saraf
相关产品推荐
相关产品推荐

