我必须创建Scala库,它应该被划分为核心模块和包含其他特性的模块(比如zio核心和zio流)。我的想法是把他们放在单独的github回购,但在不同的子项目。我该怎么做?我必须单独发布这些模块吗?他们能有不同的版本吗?
另外,我还不清楚库用户是否应该只包括“功能模块”,后者将临时包含核心模块。同样,这意味着在ZIO情况下,我只能包含zio流,并且我可以使用zio核心。
发布于 2022-01-19 13:59:52
,我该怎么做?
按照您刚才描述的方式,有多个sbt模块。
我必须分别发布这些模块吗?
通常有一个root模块,聚合所有其他模块,如core和extras (依赖于core__),以及发布root,后者将临时发布其他模块。
他们能有不同的版本吗?
没有什么能阻止你有不同的版本..。但是,我从未见过一个库这样做,当版本不能相同时,它们在单独的github repos中(这是有意义的,因为最终您可能会有一个自动化的过程,同时发布所有这些版本)。
另外,我不清楚库用户是否应该只包括“功能模块”,而后者会临时包含核心模块。
如果您遵循前面的模式,extras的POM将提到core,因此库的用户只能导入extras,他们的构建工具将临时获取core
然而,无论他们是否愿意这样做(或者他们认为这是一种最佳/糟糕的实践),而不是显式地包括core,这都取决于他们自己。这个主题有些争议,尽管大多数人都认为,如果您显式地使用了库中的某些内容,那么您必须显式地依赖它;参见:https://github.com/cb372/sbt-explicit-dependencies。
https://stackoverflow.com/questions/70770368
复制相似问题