【发布时间】:2022-02-03 04:56:33
【问题描述】:
对此有一个先前的答案,但我不认为accepted answer is correct
我创建了一个 Maven 插件,它基于版本的某些方面以编程方式“摆弄”<repositories> 和 <distributionManagement> 配置(因此,如果版本附加了分支名称,即 1.0.0-RC1)。这允许在功能分支构建中使用单独的 Nexus 存储库,而无需在合并回 int 之前修改 POM。
我不能只更改分支构建的 groupId,因为这是一个 OSGi 项目,并且 groupId 必须与源包完美匹配。
问题在于,在依赖解析之前似乎没有运行 maven 生命周期的任何部分。因此,为解析提供正确的<repository> 的目标永远不会被配置,所以 Maven 只是抱怨它无法解析。
链接的答案表明“干净”在解决之前运行,但这似乎不是真的。如果我将我的目标配置为具有“清理”或“验证”的默认阶段,则似乎仍会首先解决。
我可以让我的插件目标在依赖解析之前运行吗?
编辑:这似乎无法做到。我认为这需要在 Maven 中修复。在依赖解析之前,应该有地方运行需要“项目”的插件,而不必在 Plexus 中钻研。这将允许在后续解析期间使用的存储库列表的动态配置。大概这需要在 EventDispatcher 实现中的某个地方进行更改(我注意到它已被弃用?)。
【问题讨论】:
-
您是否尝试在 pre-clean 阶段执行您的插件?
-
接下来我会尝试.. 现在发生了一些奇怪的事情,插件似乎不再运行了。当我让它再次运行时,我会告诉你会发生什么。
-
@heRoy No. pre-clean 仍然在依赖解析之后。这令人沮丧。 Maven 允许您以编程方式更改插件中的存储库列表,但不提供任何有意义的阶段!
-
你能解决这个问题吗?我发现自己需要在工件解析之前执行一个插件,因为该插件实际上会在本地安装一些工件,并且由于工件丢失错误而没有机会这样做!
-
@Asu 没有。我甚至在 Maven 的积压工作中提出了一个请求,但它被挡住了。我可以自己修补它,这是一个单行修复。这令人沮丧。 maven 开发人员似乎有点小圈子。这是很久以前的事了。也许你应该尝试解决这个问题,也许你现在会有更多的运气?祝你好运。
标签: maven maven-2 maven-3 maven-plugin maven-release-plugin