Publish SBT project to Maven repo(Nexus?)
WangFuqiang
–阶段性反刍–
准备配置内容
build.sbt中需要添加发布到maven相应配置:publishMavenStyle := true publishTo := { val nexus = "http://192.168.1.248:9111/nexus/content/repositories/" if (version.value.trim.endsWith("SNAPSHOT")) Some("snapshots" at nexus + "snapshots") else Some("releases" at nexus + "releases") } credentials += Credentials("${realm}", "${host}", "${username}", "${password}")
对于Nexus来说,默认的realm是“Sonatype Nexus Repository Manager”,如果不确定的话, 可以通过命令curl -X POST http://${port}:${port}/nexus/content/repositories/releases -v
来获得,或者直接不写username和password,待报错的时候获得相应信息,因为sbt使用WWW-AUthenticate这个header来确定basic auth的realm。
host参数只写IP或者域名,不需要添加port!
本地测试
可以通过sbt publish-local
先本地测试一下, 发布到本地maven库中并检查是否有遗漏或者错误
正式发布
运行sbt publish
, 等待结果…
关于Credentials
直接写到project的build文件当然可以,但还是放到独立的一台发布机上比较靠谱一些,所以,我们可以在project的build文件里只声明credential文件的位置:
credentials += Credentials(Path.userHome / ".ivy2" / ".credentials_busymachines_snapshots"), credentials += Credentials(Path.userHome / ".ivy2" / ".credentials_busymachines_releases")
然后在相应的credentials文件中在存放相应的credential信息:
realm=Repository Archiva Managed snapshots Repository host=archiva.busymachines.com user=myuser password=mypass
其它参考
「为AI疯狂」星球上,扶墙老师正在和朋友们讨论有趣的AI话题,你要不要⼀起来呀?^-^
这里
- 不但有及时新鲜的AI资讯和深度探讨
- 还分享AI工具、产品方法和商业机会
- 更有体系化精品付费内容等着你,加入星球(https://t.zsxq.com/0dI3ZA0sL) 即可免费领取。(加入之后一定记得看置顶消息呀!)

存量的时代,省钱就是赚钱。
在增量的时代,省钱其实是亏钱。
避坑儿是省钱的一种形式,更是真正聪明人的选择!
弯路虽然也是路,但还是能少走就少走,背后都是高昂的试错成本。
订阅「福报」,少踩坑,少走弯路,多走一步,就是不一样的胜率!
