Как определить, является ли артефакт Maven в моем репо из командной строки?
Я хочу проверить из командной строки, если определенную координату (groupId.artifactId.version
) можно найти в репозитории.
Если это возможно, можно ли это сделать с частичными координатами (например, artifactId.version
)? Могу ли я указать репо?
Я не прошу обходных решений - я мог бы просто начать поиск файлов в своем локальном репо или ввести артефакт в POM, дождаться ошибок или установить Nexus и выполнить поиск по пользовательскому интерфейсу...
Это удобная вещь - однажды на CLI было бы неплохо быстро проверить.
Ответы
Ответ 1
Здесь ближайший, я думаю, вы получите:
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 всегда будет проверять центральное репо.
Ответ 2
Я никогда не слышал о чем-то подобном. Вероятно, get
цель плагина dependency
как-то близко, но это все еще не совсем то, что вы ищете. Боюсь, что нет такой вещи. Однако, wrting собственный плагин Maven, который делает то, что вы хотите, может быть довольно простым. Новый механизм разрешения артефактов в Maven 3, называемый Aether, имеет действительно хороший и простой API.
В любом случае, посмотрите на плагин зависимостей:
http://maven.apache.org/plugins/maven-dependency-plugin/get-mojo.html