Ric*_*ard 7 maven-2 maven-plugin maven-3 maven maven-release-plugin
对此有一个先前的答案,但我认为接受的答案不正确
我创建了一个 Maven 插件,它根据版本的某些方面以编程方式“摆弄”<repositories>和<distributionManagement>配置(因此,如果版本附加了分支名称,即 1.0.0-RC1)。这允许在功能分支构建中使用单独的 Nexus 存储库,而无需在合并回 int 之前修改 POM。
我不能只更改分支构建上的 groupId,因为这是一个 OSGi 项目,并且 groupId 必须理想地匹配源包。
问题是在依赖解析之前运行的 Maven 生命周期中似乎没有任何部分。因此,<repository>永远不会配置提供正确分辨率的目标,因此 Maven 只是抱怨它无法解决。
链接的答案表明“干净”在解决之前运行,但似乎并非如此。如果我将目标配置为具有“清理”或“验证”的默认阶段,则解决方案似乎仍会首先发生。
我可以让我的插件目标在依赖解析之前运行吗?
编辑:这似乎无法完成。我认为这需要在 Maven 中修复。在依赖解析之前,应该有地方运行需要“项目”的插件,而不必深入研究 Plexus。这将允许在后续解析期间使用的存储库列表的动态配置。大概这需要在 EventDispatcher 实现中的某处进行更改(我注意到已弃用?)。
我建议看一下Maven 中的 EventSpy,它具有用于工件解析或RepositoryEvent.EventType的此类事件,但这不能作为插件使用。
“onEvent”的实现可能如下所示:
@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 );
}
}
Run Code Online (Sandbox Code Playgroud)
哪里的
| 归档时间: |
|
| 查看次数: |
1697 次 |
| 最近记录: |