自定义sbt仓库位置并打包给指定路径下的maven仓库
1. 修改sbt仓库
- 直接修改sbt安装路径下的conf/sbtopts似乎不行
- 需要修改bin/sbt-launch.jar
用winRAR打开sbt-launch.jar,修改sbt/sbt.boot.properties,修改ivy-home:为 F:\sbt_repository
ivy-home: F:\sbt_repository
2. 修改maven仓库
修改maven的settings.xml,添加以下内容
<localRepository>F:/repository</localRepository>
3. 遇到的问题
sbt common/aether-install打包默认打包到maven默认路径,不能打包的新的maven仓库
4. 尝试方法
修改sbt的maven依赖,在sbt的repositories配置maven依赖,在sbt的sbt/sbt.boot.properties配置maven依赖
text
maven-local: file:///F://repository
这块是sbt使用maven仓库的配置,不影响打包操作
另一种方法是sbt common/aether-deploy发布到私服,maven再down下来
5. 找到原因
因为用的aether插件打的包,下载了一下源码
https://github.com/arktekk/sbt-aether-deploy.git
aether源码中一行代码
aetherLocalRepo := Path.userHome / ".m2" / "repository",
他将maven仓库写死在代码里面了
5. 解决问题
修改代码,因为0.17版本需要sbt 0.13.8,直接修改了0.21的最新版
lazy val aetherBaseSettings: Seq[Setting[_]] = Seq(
aetherLocalRepo := new File("F:/repository"),//Path.userHome / ".m2" / "repository",
defaultCoordinates,
deployTask,
installTask,
aetherPackageMain := {
(Keys.`package` in Compile).value
},
aetherOldVersionMethod := true,
logLevel in aetherDeploy := Level.Debug
)
然后打包,替换sbt使用的jar包即可
然后使用sbt common/aether-install就可以打包到指定的maven仓库
应该通过在自己工程里边的build.sbt文件里边自定义那个key, 比如 import aether.AetherKeys._ aetherLocalRepo := “xxxx”, 一般的插件都是支持很多settings key配置的