Как загрузить jar с помощью maven программно

Я пишу приложение, которое требует от меня загрузки jar с учетом mavens groupid/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, представляющий его. Это, кажется, работает хорошо.

Я хотел бы знать две вещи:

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

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

Мне бы очень хотелось узнать, как это сделать с помощью классов maven.

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

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

6
задан yegor256 28 October 2012 в 12:38
поделиться