之前有一个答案,但我不认为accepted answer is correct
我创建了一个Maven插件,以编程方式提供了&#39; fiddles&#39;基于版本的某些方面的<repositories>
和<distributionManagement>
配置(如果版本具有附加的分支名称,即1.0.0-RC1)。这允许在功能分支构建中使用单独的Nexus存储库,而不需要在合并回int之前进行POM修改。
我不能只更改分支构建的groupId,因为这是一个OSGi项目,groupId必须理想地匹配源包。
问题是在依赖解析之前似乎没有maven生命周期的一部分。因此,提供正确的<repository>
解决方案的目标永远不会被配置,因此Maven只是抱怨它无法解决。
相关的答案表明&#39;清洁&#39;在解决之前运行,但它似乎不是真的。如果我将目标配置为默认阶段&#39; clean&#39;或者&#39;验证&#39;,解决方案似乎仍然首先发生。
我可以在依赖项解析之前运行插件目标吗?
编辑:似乎无法做到这一点。我认为这需要在Maven中修复。在依赖解析之前,应该有地方运行需要&#39; project&#39;的插件,而不必在Plexus中进行钻研。这将允许动态配置在后续解析期间使用的存储库列表。据推测,这需要在EventDispatcher实现中的某处进行更改(我注意到它已被弃用?)。
答案 0 :(得分:1)
我建议您查看EventSpy in Maven或artifact resolution此类事件的RepositoryEvent.EventType但是这不会作为插件工作。
onEvent&#39;的实现可能看起来像这样:
@Override
public void onEvent( Object event )
throws Exception
{
try
{
if ( event instanceof ExecutionEvent )
{
executionEventHandler( (ExecutionEvent) event );
}
else if ( event instanceof RepositoryEvent )
{
repositoryEventHandler( (RepositoryEvent) event );
}
else if ( event instanceof MavenExecutionRequest )
{
executionRequestEventHandler( (MavenExecutionRequest) event );
}
else if ( event instanceof MavenExecutionResult )
{
executionResultEventHandler( (MavenExecutionResult) event );
}
else if ( event instanceof DependencyResolutionRequest )
{
dependencyResolutionRequest( (DependencyResolutionRequest) event );
}
else if ( event instanceof DependencyResolutionResult )
{
dependencyResolutionResult( (DependencyResolutionResult) event );
}
}
catch ( Exception e )
{
logger.error( "Exception", e );
}
}
其中