有没有办法使用java或任何其他语言从maven存储库下载jar文件?
在 Maven 项目中,当我添加依赖项时,如果本地系统上不存在该依赖项,它通常会从远程存储库下载 jar 文件。
有没有办法做到这一点,而不使用 Maven,就像在库中一样,或者构造一个 URL,然后获取 jar?
用于从 URL 下载文件的 Java 应用程序:
import java.io.*; import java.net.*; import java.nio.file.*;
public class Download {
public static void main(String[] args) throws MalformedURLException, IOException{
String url = args[0];
String fileName = url.substring(url.lastIndexOf('/') + 1, url.length());
try(InputStream in = new URL(args[0]).openStream()) {
Files.copy(in, Paths.get(fileName), StandardCopyOption.REPLACE_EXISTING);
}
}
}
$ java Download.java https://repo1.maven.org/maven2/org/xerial/sqlite-jdbc/3.36.0.3/sqlite-jdbc-3.36.0.3.jar
$ ls sqlite-jdbc-3.36.0.3.jar
sqlite-jdbc-3.36.0.3.jar
$
除了 Java 之外,其他所有内容都可以正常下载,即通过浏览器或通过命令行工具(如
curl
:)下载
$ curl https://repo1.maven.org/maven2/org/json/json/20220320/json-20220320.jar --output json-20220320.jar
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 70939 100 70939 0 0 339k 0 --:--:-- --:--:-- --:--:-- 348k
例如,您可以轻松地从公共存储库下载任何 jar 或 pom 文件
https://repo1.maven.org/maven2/...
<!-- Example -->
https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-starter/2.6.7/
在 Java 中下载文件非常简单,当你有 URL 时,有多种方法可以做到这一点。
通常你会直接在存储库网页中找到与下载相关的信息,大多数情况下这些信息也在 Maven 网站中,不过 Maven 的构建正是为了解决下载的 jar 的错误
假设您要下载:
<dependency>
<groupId>org.eclipse.jetty.ee10.websocket</groupId>
<artifactId>jetty-ee10-websocket-jakarta-server</artifactId>
<version>12.0.7</version>
</dependency>
如果您已下载 mvn(您甚至可以将其保留在下载文件夹中...),请运行:
mvn dependency:copy -Dartifact=org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jakarta-server:12.0.7 -DoutputDirectory=test/
它将下载您想要的内容。