Загрузите файлы jar из репозиториев Maven

Есть ли способ загрузить файл jar из репозитория maven с помощью java или любого другого языка?

В проекте Maven, когда я добавляю зависимость, он обычно загружает файлы jar из удаленного репозитория, если он не существует в локальной системе.

Есть ли способ сделать это без использования Maven, например, в библиотеке, или создать URL-адрес, а затем получить банку?

Все сводится к построенному URL. Преимущество использования maven заключается в том, что он понимает зеркала, если они настроены, и т. д. Какую основную проблему вам нужно решить?

Thorbjørn Ravn Andersen 15.05.2022 16:39

«получить банку» — вы хотите загрузить только один файл JAR — без каких-либо зависимостей? Вы мая сможете построить требуемый URL-адрес для загрузки, если вы знаете подробности зависимости (и, возможно, также имя файла JAR, если оно не соответствует координатам зависимости). Посмотрите на ссылку jar на типичной странице Maven, такой как Вот этот. Я не знаю, почему вы хотели бы это сделать или насколько это было бы полезно без его транзитивных зависимостей... Вы можете просто написать свое собственное приложение "Maven-Lite".

andrewJames 15.05.2022 16:41

Ни в коем случае не в качестве критики, но мне также интересно, что мотивирует желание сделать это? У вас есть какой-то конкретный вариант использования?

skomisa 15.05.2022 18:42

Ну, у меня нет варианта использования для этого, мне просто интересно, как это сделать.

Forsythe 16.05.2022 05:56
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
48
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы можете легко загрузить любые файлы 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/, затем вы можете войти в библиотеку, которую ищете, и затем щелкнуть нужную версию. После нажатия на версию появится таблица со строкой Файлы, которая содержит ссылки на файлы .pom и .jar.

Приложение Java для загрузки файла с URL-адреса:

    import java.io.IOException;
    import java.io.InputStream;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.nio.file.StandardCopyOption;
    import java.net.URL;
    import java.net.MalformedURLException;
    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

Найдите URL-адрес файла jar, используя это: Как скачать банки из репозитория Maven Затем используйте этот код для загрузки файла jar с URL-адреса:

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
}

Скачать файл с URL-адреса в Java

Другие вопросы по теме