如何获取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
相关产品推荐
相关产品推荐

