-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
publish Bill of Materials POMs #877
Conversation
这样做的好处是什么?又多继承了一层,感觉很奇怪 |
对于使用者来说,引入 BOM 的话,避免
对于 |
以前的parent pom有这个作用。 另外还有一些疑问:
|
接近, 但是没有子 artifact 的版本,只有第三方的
看起来是的,不过官方的示例也是这种,暂时没发现其他问题,如果子模块 在
bom 对外没有自身编译啥需要的东西,但子项目需要,因此有个 parent,用来放编译,checkstyle 之类的,取决于项目需要,不严格要求的可以合成一个 |
这个问题倒不大,现在jetcache的parent和子模块都是一样的。
你的意思是,把一些其它的东西从bom里面去掉,从人读的角度来说这个bom的内容更少一些?不过从计算机的角度来说,要下载的东西并不会少,parent和bom作为子模块的爸爸和爷爷要下载下来,继承结构还多了一层。 这一点,别的项目都是怎么做的? |
但实际用的话,没有子模块的版本,BOM 的意义没有那么大,对用户而言,其他的依赖都可以自己解决,但是有一个 BOM 能声明所有的版本会更方便,不用重复写其他子模块的版本,传递依赖可以传递版本,但是有不同版本的时候就不行。
类似于这个 PR 的方案有:
不是这种方案,而是 bom 只记录子身子模块的版本,外部版本由其他人自己决定的有:
其他的 grpc java, spring 高版本, micrometer, project reactor,okhttp 是通过 gradle 实现的. 也有自己写 bom 插件的:https://github.com/apache/camel/blob/main/bom/pom.xml 分析下来就是,外部库版本对自身的实现不影响的,没有太大兼容性风险的都是只维护子模块 BOM,否则就是 spring 这种。我觉得 jetcache 也是 spring 这种吧,毕竟 jedis 不同版本的区别太大了,假如只用子模块的 BOM,然后让 spring 来选择依赖,那么如果 spring 版本低了(例如我们是 2.x, jedis 还在 3.x 的版本)就会出现兼容问题,jedis api 不一样了、少类、包名换了。 |
ok,我没有问题了。 另外,上次改的jedis相关的内容,你们自己用过了吗,是否需要发布一个版本? |
Motivation
Resolve: #452
References