手动下载maven仓库jar包归档到指定文件夹
使用场景
想要每天定时从仓库拉取最新的SNAPSHOT版本jar包,然后归档到指定的目录。最初想用wget命令拼接私服地址,后来发现快照版的jar包在仓库里并不是按照{version}.jar来存储的,他的存储形式如下:
com/test/test-proj/1.0-SNAPSHOT/test-proj-1.0-20220409.064850-6.jar
后边跟了一个时间戳,查看了maven的文档,发现SNAPSHOT版本的jar包比较特殊,每一次deploy所生成的jar都会在仓库里有记录。
由于有一个时间戳,无法准确拼出完整的下载地址,所以使用wget命令下载就不可行了。
使用maven-dependency-plugin插件下载
这个插件是maven官方提供的一个,具体使用方法详见官方文档:
https://maven.apache.org/plugins/maven-dependency-plugin/
这里只记录实现自动下载并归档的方法。
创建pom.xml
这里演示的是将commons-lang:2.6下载到D:/aaa目录下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.iminifly</groupId>
<artifactId>download-jar</artifactId>
<version>1.0</version>
<dependencies>
<!-- 这里声明要下载的jar包坐标 -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
</execution>
</executions>
<configuration>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<!-- 是否下载jar包的依赖包,这里不做深度解析,只下载声明的jar -->
<excludeTransitive>true</excludeTransitive>
<!-- 是否去掉jar报的版本号 -->
<stripVersion>false</stripVersion>
<!-- jar包拷贝归档目录,可以按需修改 -->
<outputDirectory>D:/aaa</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
<!-- 如果下载的是公共包,则不需要配置repository, 可以注释掉 -->
<repositories>
<repository>
<id>maven-public</id>
<!-- 这里配置的是我本地的私服 -->
<url>http://127.0.0.1:8080/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</snapshots>
</repository>
</repositories>
</project>
执行命令
mvn dependency:copy-dependencies
会自动将jar包下载的我们指定的D:/aaa目录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构