Вопрос по java, maven – Как я могу скачать банку с помощью Maven программно

6

Я пишу приложение, которое требует от меня загрузки jar-файла с учетом идентификатора группы mavens / artifactid / version.

Я сейчас начинаю с

public Model pomToModel(String pomUrl) throws Exception {
URL url = new URL(pomUrl);
    InputStream stream = url.openStream();
    try {
        Model model = new MavenXpp3Reader().read(stream);
        return model;
    } finally {
        stream.close();
    }
}

Так, учитывая URL POM, теперь у меня есть объект maven Model, представляющий его. Кажется, это хорошо работает.

Что я хотел бы знать, так это две вещи:

найдите URL артефакта jar, который модель представляет в репозитории maven, который будет использовать плагин maven дайте модель, найдите файл, представляющий банку в локальном хранилище

У меня уже есть решения низкого качества: я захожу на mvnrepository.com, вручную кодирую URL, и использую ~ / .m2 / repository в качестве префикса для файла. Я, конечно, могу улучшить это решение, но в итоге я плохо продублирую код, который хорошо протестирован и хорошо используется в базе кода maven.

Мне бы очень хотелось узнать, как это сделать, используя классы maven.

Я провел довольно много поисков в Google, но забавная вещь о поиске чего-либо о maven и jar (даже в stackoverflow) заключается в том, что я нахожу множество решений о том, как использовать maven, а не как программировать с использованием классов maven. .

Спасибо за помощ

взгляните такжеjcabi-aether, что может помочь сделать это проще и меньше кода yegor256
Maven загружает все файлы JAR, которые указаны в его pom.xml. Pramod Kumar

Ваш Ответ

2   ответа
2

который предполагается использовать Эфир Либ.

Смотрите такжеhttp: //www.sonatype.com/people/category/aether

Кроме того, естьПример как делать вещи и полный исходный код Aether lib. Уже давно я играл немного немного пообщался с эфиром.

Ну, я провел несколько несчастных часов, играя с Эфиром. Есть ли где-нибудь учебник или блог? Демки не компилируются, классы, которые они называют, не существуют. Я продержусь еще несколько часов, прежде чем ударить головой по столу:) Phil Rice
Вот несколько объяснений того, как использовать код, со ссылкой на пример плагина, который делает это: Sonatype.com / люди / 2011/01 / как в использовании-эфир-в-Maven-плагин Noremac
6
Опция

Это родная библиотека, которая поставляется с Maven 3.0

Вариант 2

Если вам нужно простое решение для загрузки модулей Maven из командной строки или внутри сценария оболочки, Apache ivy имеет Автономный баночка.

Пример

использование менеджера зависимостей IVY программно

Вариант 3

Если вы просто ищете банку Maven и не заботитесь об управлении зависимостями, это еще проще.

Вот как получить банку log4j прямо из Maven Central:

curl -O http://search.maven.org/remotecontent?filepath=log4j/log4j/1.2.17/log4j-1.2.17.jar

Если вы используете менеджер хранилища Nexus, у него есть полезный REST API

Использование API отдыха Nexus для получения последней версии артефакта для заданного groupid / artifactId

Не забудьте пометить это как ответ, если это было ваше решение Noremac
Я должен сказать, что подход плюща сработал очень хорошо. Скомпилировано и запущено. Developers-blog.org / блог / по умолчанию / 2010/11 / 08 / ... было отлично. Спасибо, я пойду с этим Phil Rice

Похожие вопросы