如何编写命令行工具从Maven下载指定依赖的Sources Jar?
解决方案
1. 修正Maven dependency:copy命令
你之前的命令漏了-D参数的横杠,正确命令可直接指定sources classifier下载:
mvn dependency:copy -Dartifact=log4j:log4j:1.2.8:sources -DoutputDirectory=./downloads
-Dartifact格式为groupId:artifactId:version:classifier,明确指定sources即可精准获取源码包-DoutputDirectory可自定义下载目录,默认会放到当前目录的target/dependency下
如果要通过独立的groupId、artifactId、version参数传递,可在脚本中拼接参数:
mvn dependency:copy -Dartifact=$GROUP_ID:$ARTIFACT_ID:$VERSION:sources -DoutputDirectory=./downloads
2. 使用Maven dependency:get命令(无需本地pom.xml)
该目标无需本地存在pom.xml,直接指定参数即可完成下载:
mvn dependency:get -Dartifact=log4j:log4j:1.2.9:sources -Ddest=./log4j-1.2.9-sources.jar
-Ddest可直接指定下载后的文件名,完美匹配你需要的命名格式- 同样支持变量拼接,适合集成到自定义命令行工具中
3. 轻量替代:Apache Ivy命令行工具
若不想依赖完整Maven环境,可使用Apache Ivy的命令行工具,配置更简洁:
ivy -dependency log4j log4j 1.2.9 -retrieve "lib/[artifact]-[revision]-[classifier].jar" -confs default,sources
Ivy会自动识别仓库中的源码包并完成下载,适合轻量化场景
注意事项
若执行命令后未下载到源码包,大概率是该依赖未将sources包发布到对应Maven仓库,需先确认仓库中是否存在对应的sources分类包。
内容的提问来源于stack exchange,提问作者Atul
相关产品推荐
相关产品推荐

