SBT发布本地类库

这篇博客介绍了如何使用SBT将自定义的类库发布到本地仓库,以便其他项目依赖。首先,需要在build.sbt中设置name, organization等属性及publishTo为本地路径。使用`publishLocalConfiguration.value.withOverwrite(true)`允许覆盖已存在的发布。运行`sbt publish`即可发布类库。在依赖方的项目中,需配置对应的resolver和依赖,注意设置`sbt.override.build.repos=false`以使用自定义resolvers。依赖时,使用`%%`指定Scala版本,避免找不到依赖路径的错误。" 94594141,5777423,AutoSAR学习指南 - 入门篇,"['AutoSAR', '嵌入式开发', '软件工程', '教程', '编程语言']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己写的库如何发布使得其他的项目可以依赖? 

首先是某个类库要定义好name, organization这些属性(在build.sbt中), 然后指定 publishTo 的值

我这里是发布到的本地的仓库, 所以Resolver使用的是文件路径, 也可以是URL,具体参考官网的文档

https://www.scala-sbt.org/1.x/docs/Publishing.html

下面的 publishLocalConfiguration.value.withOverwrite(true) 是为了允许发布的时候覆盖, 否则已存在的话, 发布会有个报错提示你加这个配置

 

类库的 build.sbt 定义

然后在 sbt 命令行中, 运行 pushlish 即可发布到对应路径, 可以打开对应的路径查看

控制台也会输出路径

 

对于依赖方, 在build.sbt中配置对应的 resolver 和 依赖即可引用相应的库了

注意这里 sbt.override.build.repos=false 才行, 不能为 true, 否则不会使用这里定义的resolvers

依赖路径中的 %% 表示ivy的依赖路径, 后面是有具体scala的版本号的,可以看到上面的发布路径中有 _2.12 的后缀

如果只使用 % 是找不到路径的, 报错信息里面也会有所体现

提示找不到 "xxx" resolver? 

需要添加 "xxx"  resolver 到 resolvers, 比如:

val localRepo = Resolver.file("local", file("D:\\ivy-home\\cache"))/*(Resolver.ivyStylePatterns)*/
ThisBuild / resolvers += localRepo
ThisBuild / publishTo := Some(localRepo)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值