我目前遇到了错误构建依赖项的问题,虽然据说是发布版,但实际上依赖于快照。要识别“快照依赖”(传递和直接),我正在使用这个mvn依赖:tree命令:
mvn dependency:tree -Dincludes=:::*-SNAPSHOT
这非常有效,直到我遇到以下情况:某人必须拍摄快照,并且无需更改任何其他内容,手动将其作为版本上传。他们没做的是改变父母pom的版本 - 是的,你猜对了! - 是快照。
发生了什么事情,为了使情况更糟,然后删除了快照父pom,并且由于缺少传递快照pom依赖性,构建失败。我没有在本地遇到问题,因为没有注意到我已经将它下载到我的本地mvn仓库,但是在一个有一个空的maven存储库的新奴隶上的CI构建无法拉动它。
所以,我想知道是否有任何方法可以找到所有快照依赖项(pom和jar),包括传递依赖项。
这里有一个问题,乍一看有点类似:Maven dependency tree and pom dependencies它说你不能用maven依赖插件做到这一点。
我还发现,从v2.9开始就有dependency:display-ancestors目标,但它只适用于当前pom的祖先,而不是依赖的祖先。
那么,有没有其他方法可以解决这个问题 - 如果没有使用maven依赖插件,那么可能在某种程度上呢?
在这篇文章中,有人编写了一个自定义插件来增强依赖性:display-ancestors功能:Maven dependency tree and pom dependencies编写另一个自定义插件是如何做到这一点的唯一方法?
或者是否有任何类型的检查也可以在创建发布时运行以确保它不依赖于任何快照(包括pom快照)并且如果发现类似的内容,则无法构建/停止发布?
依赖于这样的糟糕版本真的很烦人,能够以某种方式分析你的依赖关系以防止事情真正中断之前,或者更糟糕的是,在没有你意识到这个问题的情况下突然开始变化是非常好的直到你遇到奇怪的运行时问题。