2009-05-19 6 views
4

Есть ли maven-клиент, который не является mvn (двоичный файл, включенный в дистрибутив maven), я мог бы использовать, чтобы вытащить артефакт из репозитория maven без использования pom? Я хотел бы использовать репозиторий maven как repo для нашей команды ops, чтобы собрать сборки (включая моментальные снимки ), но я не хочу, чтобы им приходилось возиться с написанием поэм и объявлением зависимостей в них. В идеале, я ищу только клиента кли, который мог бы просто передать URL-адрес репо и координировать и загрузить данный артефакт. Существует ли такая вещь, или мне лучше написать одноразовый скрипт для этого?Утилита для загрузки артефактов из maven-репо без mvn/poms

+0

Я считаю, что это api whaley имеет отношение к http://nexus.sonatype.org/nexus-faq.html#25 – 2010-07-30 21:22:53

ответ

4

Использование Nexus. Он предоставляет веб-интерфейс, который другие команды могут использовать для загрузки артефактов. http://nexus.sonatype.org/

+0

Я уже использовал Nexus, и я только что узнал об их url-api для поиска артефактов на основе по координатам. Вчера об одном из них сообщили об этом на своем irc-канале. спасибо за ответ, хотя. – whaley

3

Используйте maven embedder. Более того, используйте функциональность внутри maven-встроенного устройства для разрешения и загрузки банок. Хотя, если вы пытаетесь просто написать простой CLI, структура репозитория не является сложной, и вы можете легко написать сценарий, который берет URL-адрес репозитория maven, идентификатор артефакта, идентификатор группы и версию для создания полного URL-адреса в банке.

0

Ну, с технической точки зрения, доступ к репозиторию осуществляется через HTTP, поэтому с учетом местоположения репозитория, артефакта и координат следует просто предоставить команде ops URL-адрес артефакта, который они могут использовать в любом браузере.

+0

Это становится немного волосатым с моментальными снимками, так как фактическое имя файла артефакта в репозитории имеет временную метку, и я хотел, чтобы они могли сбрасывать любой артефакт программным способом. Я уже использовал nexus, и, оказывается, у них есть api для этого уже. – whaley

+0

Gotcha - Полезно знать о nexus –

+1

@whaley вы можете разместить ссылку на API Nexus? –

0

Подумайте о Pax URL который позволяет использовать простые URL, чтобы ссылаться на Maven артефакты вроде так:

 
mvn:groupId/artifactId/version 

PAX URL Website Смотрите для получения дополнительной информации (МВН Protocol Handler).

Toni

7

Я вижу 3 простых варианта:

  1. Просто отправить им ссылку, указывающую на ваш артефакт в вашем хранилище, и они использовали свой браузер.
  2. Установка и использование wget (wget http://path/to/artifact.extension).
  3. Установка и использование mvn dependency:get (требуется mvn но не требует pom.xml см this answer для более подробной информации).
1

Это, как мы делаем это в 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.

+0

Можем ли мы использовать этот плагин для загрузки запрошенного артефакта в нужное место пользователя и любую функцию, чтобы извлечь его в определенное место? – gihan

 Смежные вопросы

  • Нет связанных вопросов^_^