手动下载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目录

posted @ 2022-04-09 17:21  iminifly  阅读(592)  评论(0编辑  收藏  举报