我需要用我自己的實現替換一些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