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

如何获取Maven构建生成的所有工件的本地仓库路径?

获取Maven构建生成的所有工件本地路径

嗨,我来帮你梳理这个问题的解决方案,一步步拆解来看:

关于工件文件名的规则

默认情况下,Maven生成的工件文件名确实是由artifactId、version和type组合而成,格式为{artifactId}-{version}.{type}。不过有两个例外情况需要注意:

  • 如果工件带有classifier(比如源码包、JavaDoc包),文件名会变成{artifactId}-{version}-{classifier}.{type},例如my-app-1.0.0-sources.jar
  • 如果构建过程中自定义了插件配置(比如通过maven-jar-plugin修改输出文件名),生成的文件名会遵循自定义规则,这时候就不适用默认格式了

使用mvn help:evaluate获取工件本地路径

你完全可以用help:evaluate插件来获取所有工件的本地路径,分主工件和附加工件两种情况:

1. 获取主工件的本地路径

主工件可以通过project.artifact.file.path表达式直接获取,执行命令:

mvn help:evaluate -Dexpression=project.artifact.file.path -q -DforceStdout

参数-q用来关闭冗余日志,-DforceStdout确保只输出路径结果,避免额外的提示信息。

2. 获取所有附加工件的本地路径

附加工件(比如插件生成的源码包、javadoc包,或者其他自定义附加构件)存储在project.attachedArtifacts集合中,用Groovy表达式可以遍历输出所有路径:

mvn help:evaluate -Dexpression="project.attachedArtifacts*.file.path" -q -DforceStdout

这个命令会把每个附加工件的路径单独输出一行。

3. 一次性获取主工件+所有附加工件的路径

如果想同时拿到所有工件的路径,可以把两个表达式结合:

mvn help:evaluate -Dexpression="[project.artifact.file.path] + project.attachedArtifacts*.file.path" -q -DforceStdout

注意事项

  • 执行这些命令前,需要先完成mvn package或mvn install阶段,因为只有构建完成后,工件文件才会生成在本地(package阶段生成在target目录,install阶段会同步到本地Maven仓库)
  • 单独执行mvn help:evaluate -Dexpression=project.artifact只能获取主工件的元信息,无法拿到附加工件的数据,必须结合project.attachedArtifacts才能覆盖所有生成的工件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 07:02:57