从 Maven 存储库下载 jar 文件
Download jar files from Maven Repositories
有什么方法可以使用 java 或任何其他语言从 Maven 存储库下载 jar 文件?
在 Maven 项目中,当我添加依赖项时,如果本地系统上不存在,它通常会从远程存储库下载 jar 文件。
有什么方法可以做到这一点,而不使用 Maven,就像在库中一样,或者构建一个 URL 然后获取 jar?
例如,您可以从 public 存储库轻松下载任何 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 文件的错误
- 在浏览器中导航到 https://mvnrepository.com/
- 确定您的图书馆。 (在搜索框中输入图书馆名称或相关主题。然后 select 单击它。)
- 在图书馆的页面上,您必须单击所需的特定版本。
- 在版本页面上有一个名为 Files 的 table 行,其中包含指向 .pom 和 .jar 文件的链接。
Java 应用程序从 URL 下载文件:
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 文件的 URL:
How To Download Jars From Maven Repository
然后使用此代码从 URL:
下载 jar 文件
try (BufferedInputStream in = new BufferedInputStream(new URL(FILE_URL).openStream());
FileOutputStream fileOutputStream = new FileOutputStream(FILE_NAME)) {
byte dataBuffer[] = new byte[1024];
int bytesRead;
while ((bytesRead = in.read(dataBuffer, 0, 1024)) != -1) {
fileOutputStream.write(dataBuffer, 0, bytesRead);
}
} catch (IOException e) {
// handle exception
}
有什么方法可以使用 java 或任何其他语言从 Maven 存储库下载 jar 文件?
在 Maven 项目中,当我添加依赖项时,如果本地系统上不存在,它通常会从远程存储库下载 jar 文件。
有什么方法可以做到这一点,而不使用 Maven,就像在库中一样,或者构建一个 URL 然后获取 jar?
例如,您可以从 public 存储库轻松下载任何 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 文件的错误
- 在浏览器中导航到 https://mvnrepository.com/
- 确定您的图书馆。 (在搜索框中输入图书馆名称或相关主题。然后 select 单击它。)
- 在图书馆的页面上,您必须单击所需的特定版本。
- 在版本页面上有一个名为 Files 的 table 行,其中包含指向 .pom 和 .jar 文件的链接。
Java 应用程序从 URL 下载文件:
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 文件的 URL: How To Download Jars From Maven Repository 然后使用此代码从 URL:
下载 jar 文件try (BufferedInputStream in = new BufferedInputStream(new URL(FILE_URL).openStream());
FileOutputStream fileOutputStream = new FileOutputStream(FILE_NAME)) {
byte dataBuffer[] = new byte[1024];
int bytesRead;
while ((bytesRead = in.read(dataBuffer, 0, 1024)) != -1) {
fileOutputStream.write(dataBuffer, 0, bytesRead);
}
} catch (IOException e) {
// handle exception
}