手动下载maven仓库jar包归档到指定文件夹
使用场景
想要每天定时从仓库拉取最新的SNAPSHOT版本jar包,然后归档到指定的目录。最初想用wget命令拼接私服地址,后来发现快照版的jar包在仓库里并不是按照\({artifactId}-\){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目录