我正在尝试创建一种方法,可以在仍然依赖项目中的 SNAPSHOT 依赖项的同时实现密封构建。
出于示例的目的,假设我有一个具有如下依赖结构的项目:
┌ other-1.2-SNAPSHOT
mine-1.2.3 ──┤
└ thing-3.1-SNAPSHOT ── gizmo-6.1.3-SNAPSHOT
我想做的是将所有 SNAPSHOT 依赖项在本地解析为与我当前版本相关的内容,然后将它们作为发布部署到我的 Nexus 发布存储库。并非所有这些依赖项都是内部的,因此我不能简单地对每个依赖项进行发布。
所以,在这个例子中,other-1.2-SNAPSHOT
会变成类似other-1.2-mine-1.2.3
并且thing-3.1-SNAPSHOT
会变成thing-3.1-mine-1.2.3
。这在大约 60 行 python 中是相对微不足道的。
然而,问题在于将传递性 SNAPSHOT 解析为具体版本。所以我还需要转换gizmo-6.1.3-SNAPSHOT
并gizmo-6.1.3-mine.1.2.3
依赖thing-3.1-mine-1.2.3
它。
这只是实现我想要的一种方式的一个例子。目标是在一两年后,我可以检查我的发布分支以获取版本 1.2.3 并能够运行mvn clean package
或类似的东西,而不必担心解决早已消失的 SNAPSHOT 依赖关系。
重要的是这个分支是可编译的,而不是仅仅使用类似jar-and-dependencies
程序集插件的功能来保留所有依赖项。我希望能够修改源文件并制作另一个版本(例如,应用修补程序)。
所以,
- 有没有类似的东西能够以递归方式将 SNAPSHOT 依赖项转换为具体的?
- 是否有任何插件可以为您管理这种事情?发布插件承诺在其
branch
目标上提供一些配置选项,但它并没有将外部部门解析到我想要的程度。 - 是否有其他技术可用于创建封闭的 Maven 构建?