Установить версию плагина в командной строке в Maven 2 - PullRequest
38 голосов
/ 20 мая 2010

Я создаю пример быстрого запуска Maven по умолчанию и набираю mvn checkstyle:checkstyle, он всегда пытается использовать самую последнюю версию SNAPSHOT. Возможно, это неправильно на моем сервере Nexus, но как я могу установить версию плагина в командной строке в Maven 2, например 2.5 для checkstyle вместо 2.6-SNAPSHOT?

C:\HelloWorld>mvn checkstyle:checkstyle
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'checkstyle'.
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error building POM (may not be this project's POM).

Project ID: org.apache.maven.plugins:maven-checkstyle-plugin

Reason: Error getting POM for 'org.apache.maven.plugins:maven-checkstyle-plugin' from  the repository: Failed to resolve artifact, possibly due to a repository list that is not appropriately equipped for this artifact's metadata.
  org.apache.maven.plugins:maven-checkstyle-plugin:pom:2.6-SNAPSHOT

from the specified remote repositories:
  nexus (http://localhost:9081/nexus/content/groups/public)

for project org.apache.maven.plugins:maven-checkstyle-plugin

Я думаю, это может быть mvn checkstyle:2.5:checkstyle, к сожалению, это не так.

Конечно, если я установлю зависимость сборки в pom.xml, она будет работать, но я хочу посмотреть, как может работать командная строка.

Ответы [ 4 ]

62 голосов
/ 20 мая 2010

Если вы не хотите запускать последнюю версию плагина, установленного в вашем локальном хранилище, вам нужно установить номер версии. И для этого вам нужно указать полностью квалифицированную цель в виде:

mvn groupID:artifactID:version:goal

Так в вашем случае:

mvn org.apache.maven.plugins:maven-checkstyle-plugin:2.5:checkstyle
1 голос
/ 05 октября 2018
mvn org.apache.maven.plugins:maven-site-plugin:3.7.1:site
0 голосов
/ 20 февраля 2018

Мой опыт работы с более новой версией maven (3.3.9) немного отличается. Если я не запускаю maven в автономном режиме, он ВСЕГДА будет использовать удаленное репо независимо от того, что у меня в локальном репо И если он найдет более новую версию (на основе maven-metadata.xml), он загрузит и использует ее. Более того, он будет сканировать несколько репо одновременно:

[INFO] ------------------------------------------------------------------------
[DEBUG] Resolving plugin version for com.phoenixnap.oss:springmvc-raml-plugin
[DEBUG] Could not find metadata com.phoenixnap.oss:springmvc-raml-plugin/maven-metadata.xml in local (/home/yuranos/.m2/repository)
[DEBUG] Using transporter WagonTransporter with priority -1.0 for https://repo.spring.io/libs-milestone
[DEBUG] Using transporter WagonTransporter with priority -1.0 for https://repo.spring.io/milestone
[DEBUG] Using transporter WagonTransporter with priority -1.0 for https://repo.maven.apache.org/maven2
[DEBUG] Using transporter WagonTransporter with priority -1.0 for https://repo.spring.io/snapshot
[DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for https://repo.spring.io/libs-milestone
[DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for https://repo.spring.io/milestone
[DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for https://repo.maven.apache.org/maven2
[DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for https://repo.spring.io/snapshot
Downloading: https://repo.spring.io/libs-milestone/com/phoenixnap/oss/springmvc-raml-plugin/maven-metadata.xml
Downloading: https://repo.spring.io/snapshot/com/phoenixnap/oss/springmvc-raml-plugin/maven-metadata.xml
Downloading: https://repo.maven.apache.org/maven2/com/phoenixnap/oss/springmvc-raml-plugin/maven-metadata.xml
Downloading: https://repo.spring.io/milestone/com/phoenixnap/oss/springmvc-raml-plugin/maven-metadata.xml
[DEBUG] Writing tracking file /home/yuranos/.m2/repository/com/phoenixnap/oss/springmvc-raml-plugin/resolver-status.properties
[DEBUG] Writing tracking file /home/yuranos/.m2/repository/com/phoenixnap/oss/springmvc-raml-plugin/resolver-status.properties
Downloaded: https://repo.maven.apache.org/maven2/com/phoenixnap/oss/springmvc-raml-plugin/maven-metadata.xml (2 KB at 1.0 KB/sec)
[DEBUG] Writing tracking file /home/yuranos/.m2/repository/com/phoenixnap/oss/springmvc-raml-plugin/resolver-status.properties
Downloaded: https://repo.spring.io/libs-milestone/com/phoenixnap/oss/springmvc-raml-plugin/maven-metadata.xml (2 KB at 0.9 KB/sec)
[DEBUG] Writing tracking file /home/yuranos/.m2/repository/com/phoenixnap/oss/springmvc-raml-plugin/resolver-status.properties
[DEBUG] Could not find metadata com.phoenixnap.oss:springmvc-raml-plugin/maven-metadata.xml in spring-snapshots (https://repo.spring.io/snapshot)
[DEBUG] Could not find metadata com.phoenixnap.oss:springmvc-raml-plugin/maven-metadata.xml in spring-milestones-libs (https://repo.spring.io/milestone)

Более того, maven, похоже, знает, как сравнить несколько файлов метаданных и выбрать самую последнюю версию артефакта. Maven использует Aether для разрешения зависимостей, основываясь на том, что я вижу в resolver-status.properties:

    #NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.
#Mon Feb 19 23:41:24 EET 2018
maven-metadata-spring-milestones.xml.lastUpdated=1519076484366
maven-metadata-spring-snapshots.xml.error=
maven-metadata-central.xml.lastUpdated=1519076484205
maven-metadata-spring-snapshots.xml.lastUpdated=1519076484107
maven-metadata-spring-milestones-libs.xml.lastUpdated=1519076484105
maven-metadata-spring-milestones-libs.xml.error=
0 голосов
/ 14 февраля 2018

Вы также можете использовать:

mvn {ваш идентификатор группы}: {ваш идентификатор артефакта}: {ваша версия}: {ваша цель}

...