Переопределение компонента сплетения, объявленного в другом плагине
В настоящее время я пишу плагин Maven с автоматическим выпуском модулей
- обнаружение, если модуль имеет изменения, которые должны быть выпущены
- выпуская все модули, используя
maven-release-plugin
- корректировка зависимостей во всех затронутых проектах
Я пытаюсь проверить это с помощью maven-invoker-plugin
, который использует следующую настройку в интеграционных тестах:
<build>
<plugins>
<plugin>
<groupId>@project.groupId@</groupId>
<artifactId>@project.artifactId@</artifactId>
<version>@project.version@</version>
<executions>
<execution>
<id>my-id</id>
<phase>generate-sources</phase>
<goals>
<goal>my-goal</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Контрольно-пропускной пункт, который я бью, состоит в том, что maven-dependency-plugin
запрещает этот выпуск, так как я ссылаюсь на плагин SNAPSHOT в моем pom.xml (@project.version@
выше). Справедливо.
Я обнаружил, что эта проверка выполняется в CheckDependencySnapshotsPhase, который является компонентом сплетения:
@ plexus.component role = "org.apache.maven.shared.release.phase.ReleasePhase" role-hint = "check-dependency-snapshots"
Могу ли я как-то переопределить этот компонент и подключить свой собственный? В качестве альтернативы, как я могу запустить этот интеграционный тест, не блокируясь проверкой "нет зависимостей моментального снимка"?
1 ответ
Оказывается, ответ был прямо передо мной. Вместо настройки плагина в ИТ-проекте pom.xml, просто укажите maven-invoker-plugin
выполнить его (сокращенно):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-invoker-plugin</artifactId>
<configuration>
<goals>
<goal>package</goal>
<goal>${project.groupId}:${project.artifactId}:${project.version}:inspect-changes</goal>
</goals>
</configuration>
</plugin>