Получите доступные зависимости, используя pom.xml в командной строке, например, поиск зависимостей eclipse в плагине m2eclipse - PullRequest
1 голос
/ 21 мая 2011

Плагин Maven eclipse может выполнять поиск доступных зависимостей из репозиториев по умолчанию и любых дополнительных настроенных репозиториев, учитывая, что я знаю частичный Id группы или частичный Id артефакта. Это действительно полезно при поиске доступных зависимостей. Имеется ли аналогичный механизм с использованием maven в командной строке.

Пример: предположим, что я знаю только "mybatis" , и я намереваюсь найти правильный идентификатор группы, идентификатор артефакта, и версия и тип банка есть в наличии или нет. Я могу легко сделать это, используя зависимость поиска затмения. Но без затмения мне действительно нужно использовать браузер и перейти на repo2.maven.org (и теперь я обнаружил, что просмотр этого каталога отключен).

1 Ответ

1 голос
/ 27 мая 2011

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

Во-вторых, у nexus есть API, который вы можете использовать для сценариев запросов к хранилищу.Например, вы можете использовать Ruby или Groovy и сделать что-то вроде (при условии, что Groovy установлен; я на Linux):

$ cat foo.groovy
#!/usr/bin/env groovy

def xml = args.length < 2 ? 
            "http://repository.sonatype.org/service/local/data_index?q=" + args[0] : 
            "http://repository.sonatype.org/service/local/data_index?g=${args[0]}&a=${args[1]}&v=${args[2]}"

println "Searching: " + xml

def root = new XmlParser().parseText( xml.toURL().text )
root.data.artifact.each {
  println "${it.groupId.text()}:${it.artifactId.text()}:${it.version.text()}"
}

Затем,

$ ./foo.groovy  org.mybatis mybatis  3.0.4
Searching: http://repository.sonatype.org/service/local/data_index?g=org.mybatis&a=mybatis&v=3.0.4
org.mybatis:mybatis:3.0.4
org.mybatis:mybatis:3.0.4
org.mybatis:mybatis:3.0.4

Или, ближе к вашему вопросу (вывод усечен),

$ ./foo.groovy  mybatis
Searching: http://repository.sonatype.org/service/local/data_index?q=mybatis
org.mybatis:mybatis:3.0.1
org.mybatis:mybatis:3.0.1
...
org.mybatis.caches:mybatis-caches-parent:1.0.0-RC1
org.mybatis.caches:mybatis-ehcache:1.0.0-RC1
org.mybatis.caches:mybatis-ehcache:1.0.0-RC1
...
org.apache.camel:camel-mybatis:2.7.0
org.apache.servicemix.bundles:org.apache.servicemix.bundles.mybatis:3.0.2_1

Обратите внимание, что это предполагает, что вы запрашиваете существующее nexus maven репо, и, кроме того, это просто поиск, который один репо.(Так что это не совсем то, что вы просили.)

Но, на самом деле, я хочу, чтобы это было так: мой only репозиторий, используемый в моих проектах maven, является единым внутренним (сервер внутренней сети), и он функционирует как зеркало (и кеш) всех сторонних репозиториев, которые мне нужны в данный момент.Если я решу, что мне нужно получить другие файлы из другого репо (например, googlecode или компании XYZ ...), я добавлю URL этого репо во внутреннюю конфигурацию Nexus.Все в моей команде - пользователи netbeans / eclipse / mvn - всегда указывают на одно внутреннее репозиторий Maven, и каждый автоматически выбирает новые доступные артефакты.

Затем вы можете использовать приведенный выше скрипт для поискаартефакт.(Примечание: он позволяет выполнять общий поиск или поиск в GAV (группа / артефакт / версия).)

Если вы не уверены, в каком хранилище находится данный артефакт, я думаю, что всегда есть http://mvnrepository.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...