#maven-3 #maven-plugin #checkstyle
Вопрос:
Я обновляю плагин CheckStyle во время выполнения, согласно документации.
Однако мои локальные сборки и сборки CI/CD завершаются неудачно, потому что, похоже, в обновлении плагина происходит разрешение зависимостей, не соответствующее определенному repositories
в pom.xml
.
Рассматриваемая зависимость содержит файлы стиля проверки компании.
Примечание: Я даже попытался добавить зависимость вне плагина, как показано ниже. Никаких костей.
Есть какие-нибудь намеки на то, как это решить? Журналы следуют за настройкой.
<repositories>
<repository>
<id>checkstyle-repo</id>
<url>https://repo/where/dependency/resides</url>
</repository>
<repository>
<id>company-repo</id>
<url>http://nexus-01.co.lan/content/groups/CompanyRepository/</url>
</repository>
</repositories>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.2</version>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>8.41</version>
</dependency>
<dependency>
<groupId>com.company</groupId>
<artifactId>co-checkstyles</artifactId>
<version>1.0.4</version>
</dependency>
</dependencies>
<configuration>
<configLocation>company_transitional_checkstyle.xml</configLocation>
<encoding>UTF-8</encoding>
<failOnViolation>true</failOnViolation>
</configuration>
<executions>
<execution>
<id>validate</id>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
...
...
<dependencies>
...
<dependency>
<groupId>com.company</groupId>
<artifactId>co-checkstyles</artifactId>
<version>1.0.4</version>
</dependency>
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.985 s
[INFO] Finished at: 2021-03-11T19:14:33-05:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.1.2:check (validate)
on project tax-service: Execution validate of goal org.apache.maven.plugins:maven-checkstyle-plugin:3.1.2:check failed:
Plugin org.apache.maven.plugins:maven-checkstyle-plugin:3.1.2 or one of its dependencies could not be resolved:
Failure to find com.company:co-checkstyles:jar:1.0.4 in http://nexus-01.co.lan/content/groups/CompanyRepository/ was cached in the local repository,
resolution will not be reattempted until the update interval of corepository has elapsed or updates are forced -> [Help 1]
[ERROR]
Ответ №1:
Решенный.
mvn -X
ради победы.
Но Священный Артефакт! Бэтмен… да, это не совсем понятно, или, может быть, просто не очень хорошо документировано, и я использовал maven почти 13 лет, начиная с некоторых поздних версий 1.0 и первых версий 2.0. Я не могу припомнить, чтобы сталкивался с такого рода нюансами конфигурации в жизненном цикле.
Не вдаваясь слишком глубоко в сорняки, разрешение зависимостей maven имеет два (2) режима.
- Зависимости проекта с помощью
repository
- Зависимости плагинов через
pluginRepository
В случае такого плагина, как CheckStyle, где путь к классу может быть «обновлен во время выполнения» для использования последней версии checkstyle, зависимости разрешаются из a pluginRepository
.
На работе мы обычно не определяем pluginRepositories
в наших POM и разрешаем Maven «по умолчанию» для проекта repositories
, например, corepository
at nexus-01
.
Включение отладки -X
во время mvn
выполнения привело меня к этой небольшой информации…
11835 [DEBUG] === PROJECT BUILD PLAN ================================================
11835 [DEBUG] Project: com.company:tax-service:1.1.3.36cc94b4
11835 [DEBUG] Dependencies (collect): [runtime]
11835 [DEBUG] Dependencies (resolve): [compile, compile runtime, runtime, test]
11835 [DEBUG] Repositories (dependencies): [gitlab-co-checkstyle (https://gitlab.com/api/v4/projects/nnnnnnnn/packages/maven, default, releases snapshots), corepository (http://nexus-01.co.lan/content/groups/CompanyRepository/, default, releases)]
11836 [DEBUG] Repositories (plugins) : [corepository (http://nexus-01.co.lan/content/groups/CompanyRepository/, default, releases)]
бум… Плагин CheckStyle разрешает зависимости от pluginRepository
! Эта небольшая информация сказала мне все, что мне было нужно.
Я подлатал ci_settings.xml
его, и все было хорошо.
11835 [DEBUG] === PROJECT BUILD PLAN ================================================
11835 [DEBUG] Project: com.company:tax-service:1.1.3.36cc94b4
11835 [DEBUG] Dependencies (collect): [runtime]
11835 [DEBUG] Dependencies (resolve): [compile, compile runtime, runtime, test]
11835 [DEBUG] Repositories (dependencies): [gitlab-co-checkstyle (https://gitlab.com/api/v4/projects/nnnnnnnn/packages/maven, default, releases snapshots), corepository (http://nexus-01.co.lan/content/groups/CompanyRepository/, default, releases)]
11836 [DEBUG] Repositories (plugins) : [gitlab-co-checkstyle (https://gitlab.com/api/v4/projects/nnnnnnnn/packages/maven, default, releases snapshots), corepository (http://nexus-01.co.lan/content/groups/CompanyRepository/, default, releases)]