覆盖在另一个插件中声明的plexus组件

时间:2013-07-25 17:08:23

标签: maven-3 maven-release-plugin plexus

我目前正在编写一个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> 在集成测试poms中使用以下设置:

maven-dependency-plugin

我遇到的障碍是@project.version@禁止此版本,因为我在我的pom.xml(上面的{{1}})中引用了一个SNAPSHOT插件。很公平。

我发现此检查是在CheckDependencySnapshotsPhase中进行的,这是一个丛组件:

  

@ plexus.component role =“org.apache.maven.shared.release.phase.ReleasePhase”role-hint =“check-dependency-snapshots”

我可以以某种方式覆盖此组件并插入我自己的组件吗?或者,如何在不被“无快照依赖性”检查阻止的情况下运行此集成测试?

1 个答案:

答案 0 :(得分:0)

原来答案就在我面前。而不是在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>