我需要用我自己的实现替换一些Maven默认功能,并且我正在寻找一种干净的方式来实现这一点。替换Maven 3中的plexus组件3
我已经扩展org.apache.maven.repository.internal.DefaultVersionRangeResolver
和使用component.xml文件如下注册我的扩展组件:
<component-set>
<components>
<component>
<role>org.sonatype.aether.impl.VersionRangeResolver</role>
<role-hint>default</role-hint>
<implementation>com.my.custom.VersionRangeResolver
</implementation>
<isolated-realm>false</isolated-realm>
<requirements>
<requirement>
<role>org.sonatype.aether.spi.log.Logger</role>
<role-hint />
<field-name>logger</field-name>
</requirement>
<requirement>
<role>org.sonatype.aether.spi.log.Logger</role>
<role-hint />
<field-name>logger2</field-name>
</requirement>
<requirement>
<role>org.sonatype.aether.impl.MetadataResolver</role>
<role-hint />
<field-name>metadataResolver</field-name>
</requirement>
</requirements>
</component>
</components>
</component-set>
我已经安装了包含这在我的本地回购的项目,我像这样引用它在其它项目pom.xml:
<build>
<extensions>
<extension>
<groupId>my.groupId</groupId>
<artifactId>maven-version-resolver</artifactId>
<version>SNAPSHOT</version>
</extension>
</extensions>
</build>
但是,我的工件没有使用。当我在build中运行这个小GMaven groovy脚本时:它显示了默认实现和我自己的实现,两者均使用提示“default”,这两个脚本都是在默认实现下运行的。那我该如何解决这个问题?
- 我是否需要在components.xml中设置一个附加参数(可能是更高的优先级)?
- 我是否需要将我的组件编写为Maven插件并以编程方式主动注册组件?
- 是否有任何Plexus文档涵盖此?
嘿,你有没有试过用Maven 3.3扩展机制?也可以扩展核心机制。 – splatch 2017-01-24 16:58:09