Есть ли maven-клиент, который не является mvn (двоичный файл, включенный в дистрибутив maven), я мог бы использовать, чтобы вытащить артефакт из репозитория maven без использования pom? Я хотел бы использовать репозиторий maven как repo для нашей команды ops, чтобы собрать сборки (включая моментальные снимки ), но я не хочу, чтобы им приходилось возиться с написанием поэм и объявлением зависимостей в них. В идеале, я ищу только клиента кли, который мог бы просто передать URL-адрес репо и координировать и загрузить данный артефакт. Существует ли такая вещь, или мне лучше написать одноразовый скрипт для этого?Утилита для загрузки артефактов из maven-репо без mvn/poms
ответ
Использование Nexus. Он предоставляет веб-интерфейс, который другие команды могут использовать для загрузки артефактов. http://nexus.sonatype.org/
Я уже использовал Nexus, и я только что узнал об их url-api для поиска артефактов на основе по координатам. Вчера об одном из них сообщили об этом на своем irc-канале. спасибо за ответ, хотя. – whaley
Используйте maven embedder. Более того, используйте функциональность внутри maven-встроенного устройства для разрешения и загрузки банок. Хотя, если вы пытаетесь просто написать простой CLI, структура репозитория не является сложной, и вы можете легко написать сценарий, который берет URL-адрес репозитория maven, идентификатор артефакта, идентификатор группы и версию для создания полного URL-адреса в банке.
Ну, с технической точки зрения, доступ к репозиторию осуществляется через HTTP, поэтому с учетом местоположения репозитория, артефакта и координат следует просто предоставить команде ops URL-адрес артефакта, который они могут использовать в любом браузере.
Это становится немного волосатым с моментальными снимками, так как фактическое имя файла артефакта в репозитории имеет временную метку, и я хотел, чтобы они могли сбрасывать любой артефакт программным способом. Я уже использовал nexus, и, оказывается, у них есть api для этого уже. – whaley
Gotcha - Полезно знать о nexus –
@whaley вы можете разместить ссылку на API Nexus? –
Подумайте о Pax URL который позволяет использовать простые URL, чтобы ссылаться на Maven артефакты вроде так:
mvn:groupId/artifactId/version
PAX URL Website Смотрите для получения дополнительной информации (МВН Protocol Handler).
Toni
Я вижу 3 простых варианта:
- Просто отправить им ссылку, указывающую на ваш артефакт в вашем хранилище, и они использовали свой браузер.
- Установка и использование
wget
(wget http://path/to/artifact.extension
). - Установка и использование
mvn dependency:get
(требуетсяmvn
но не требуетpom.xml
см this answer для более подробной информации).
Это, как мы делаем это в jcabi-aether:
final File repo = this.session.getLocalRepository().getBasedir();
final Collection<Artifact> deps = new Aether(this.getProject(), repo).resolve(
new DefaultArtifact("junit", "junit-dep", "", "jar", "4.10"),
JavaScopes.RUNTIME
);
Все, что вам нужно предоставить этой библиотеки является 1) список удаленных репозиториев, 2) расположение местного репо, и 3) Maven координаты артефакта. Библиотека использует Apache Aether от Sonatype.
Можем ли мы использовать этот плагин для загрузки запрошенного артефакта в нужное место пользователя и любую функцию, чтобы извлечь его в определенное место? – gihan
Я считаю, что это api whaley имеет отношение к http://nexus.sonatype.org/nexus-faq.html#25 – 2010-07-30 21:22:53