Как определить, есть ли в моем репо артефакт Maven из командной строки?

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

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

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

Это удобная вещь - после того, как вы войдете в интерфейс командной строки, было бы неплохо иметь возможность быстро проверить.


person kostja    schedule 16.04.2012    source источник
comment
Подумайте о настройке менеджера репозитория, такого как Nexus или Artifactory. Оба предоставляют веб-интерфейс для поиска   -  person Mark O'Connor    schedule 16.04.2012
comment
@ MarkO'Connor Спасибо, я знаком с nexus и использую его на работе, но на моем личном ноутбуке я считаю это излишним (с eclipse, jenkins и браузером, разделяющим мою оперативную память между собой, как есть)   -  person kostja    schedule 16.04.2012
comment
Понятно, но я обнаружил, что Nexus очень скуден в ресурсах, и, честно говоря, я не могу без него жить. Я делаю много сборок при отключении от сети и считаю, что Nexus лучше работает в качестве кеша репозитория.   -  person Mark O'Connor    schedule 16.04.2012
comment
Согласовано. Это то, что я предлагаю на тренировках Nexus и все время бегаю самостоятельно. Nexus (или любой другой менеджер репо) - лучший автономный режим Maven.   -  person Manfred Moser    schedule 17.04.2012
comment
Nexus действительно легок на процессоре, но память 300-500mb (с настройками по умолчанию) довольно избыточна ИМХО   -  person kostja    schedule 17.04.2012


Ответы (2)


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

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

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

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

person Sean Patrick Floyd    schedule 16.04.2012
comment
Работает как рекламируется, но довольно утомительно. Я бы подумал, что -o сделает repoUrl избыточным (но пробовал, и это не так). Спасибо. - person kostja; 16.04.2012
comment
@kostja Я знаю, что с maven иногда сложнее всего реализовать самые очевидные требования :-( - person Sean Patrick Floyd; 17.04.2012
comment
+1. Одно примечание: на данный момент repoUrl устарел, используйте remoteRepositories вместо этого. - person informatik01; 07.10.2013

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

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

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

person Michał Kalinowski    schedule 16.04.2012
comment
указал мне в правильном направлении, спасибо. Я действительно думал написать плагин mvn на минуту, но мне пришлось заставить себя сосредоточиться :) - person kostja; 16.04.2012