覆盖在另一个插件中声明的丛组件
Posted
技术标签:
【中文标题】覆盖在另一个插件中声明的丛组件【英文标题】:Overriding a plexus component declared in another plugin 【发布时间】:2013-07-25 17:24:22 【问题描述】:我目前正在编写一个 Maven 插件,通过
自动发布模块 检测模块是否有应发布的更改 使用maven-release-plugin
释放所有模块
调整所有受影响项目的依赖关系
我正在尝试使用 maven-invoker-plugin
对其进行测试,它在集成测试 poms 中使用以下设置:
<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
禁止此版本,因为我在 pom.xml 中引用了一个 SNAPSHOT 插件(上面的 @project.version@
)。很公平。
我发现这个检查是在CheckDependencySnapshotsPhase 中进行的,它是一个丛组件:
@plexus.component role="org.apache.maven.shared.release.phase.ReleasePhase" role-hint="check-dependency-snapshots"
我能否以某种方式覆盖此组件并插入我自己的组件?或者,如何运行此集成测试而不被“无快照依赖”检查阻止?
【问题讨论】:
听起来很有趣。这个插件是开源的吗?我会对它感兴趣。 还没有,我不能对此做出承诺。 【参考方案1】:原来答案就在我面前。无需在 IT 项目 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>
【讨论】:
以上是关于覆盖在另一个插件中声明的丛组件的主要内容,如果未能解决你的问题,请参考以下文章