2012-04-16 4 views
15

Я хотел бы проверить из командной строки, если определенную координату (groupId.artifactId.version) можно найти в репозитории.Как определить, является ли артефакт Maven в моем репо из командной строки?

Если возможно, это можно сделать с частичными координатами (например, artifactId.version)? Могу ли я указать репо?

Я не прошу обходные пути - я мог бы просто начать поиск файла в моем локальном репо, или ввести артефакт в POM и ждать ошибок, или установить Nexus и поиск по UI ...

Это удобная вещь - однажды на CLI было бы неплохо быстро проверить.

+0

Рассмотрите возможность создания диспетчера хранилища, такого как Nexus или Artifactory. Оба предоставляют веб-графические интерфейсы для поиска –

+1

@ MarkO'Connor Спасибо, я знаком с nexus и использую его на работе, но на моем личном ноутбуке я считаю его излишним (с затмением, дженкинсом и браузером, разделяющим мою RAM между собой, поскольку это is) – kostja

+1

Понял, но я нашел Nexus быть очень легким в ресурсах, и, честно говоря, я не могу жить без него. Я делаю много сборок при отключении от сети и обнаруживаю, что Nexus работает лучше, чем кэш репозитория. –

ответ

16

Вот ближе я думаю, вы получите:

mvn dependency:get -Dartifact=g:a:v -o -DrepoUrl=file://path/to/your/repo 

I'v пробовал, это удается, если артефакт (например, «junit: junit: 4.8.2») находится в вашем репо и терпит неудачу, если это не так, но вам нужно написать полный путь к вашему местному репо в качестве URL-адреса.

Ключ должен использовать флаг -o (offline), поскольку в противном случае maven всегда будет проверять центральное репо.

+0

Работает как рекламируется, хотя и довольно утомительно. Я бы подумал, что -o сделает repoUrl избыточным (но попробовал, а это не так). Спасибо. – kostja

+0

@ kostja Я знаю, что с maven иногда самые очевидные требования сложнее всего реализовать :-( –

+2

+1. Одно примечание: на данный момент * repoUrl * устарел, используйте [** remoteRepositories **] (http://maven.apache.org/plugins/maven-dependency-plugin/get-mojo.html#remoteRepositories). – informatik01

1

Я никогда не слышал о чем-то подобном. Возможно, get гол dependency плагин как-то близко, но это все еще не совсем то, что вы ищете. Боюсь, что такого не бывает. Однако, wrting собственный плагин Maven, который делает то, что вы хотите, может быть довольно простым. Новый механизм разрешения артефактов в Maven 3, называемый Aether, имеет действительно хороший и простой API.

Во всяком случае, обратите внимание на плагин зависимостей:

http://maven.apache.org/plugins/maven-dependency-plugin/get-mojo.html

+0

указал мне в правильном направлении, спасибо. Я действительно считал, что написал mvn-плагин на минуту, хотя должен был заставить себя сосредоточиться :) – kostja