修改 sbt 源,解决无法访问访问远程仓库的问题

因为要讲 Spark 的源代码导入到 IDEA 中进行查看,但是 Spark 的生成 IDEA 的项目依赖 SBT 。无赖 SBT 的源在国内无法正常访问,遂记录一下自己的解决办法,我是在 Mac OS 上面处理的,理论上在 Linux,Windows上面也可以,这里主要提供解决问题的思路。参考:http://dblab.xmu.edu.cn/blog/maven-network-problem/

思路

一般用过 Maven 的同学都知道,Maven 可以设置自己的源仓库,SBT 中也有自己源仓库的配置文件,一种是在 ''~/.sbt' 下添加 repositories 文件,这种方法试了一下,好像没有成功,不知道是因为长城宽带的原因还是此方法不行,后面的网络我都是用移动4G网络开热点测试的。还有一种方法就是修改 sbt-launch.jar 文件,下面详细讲解修改 sbt.launch.jar 的方法。

修改 SBT 源仓库

上面一直说 sbt.launch.jar 这个文件,那么这个文件到底在什么地方了,如果不知道请看我下面的路径图,你就知道在什么地方了。

  • 解压 sbt-launch.jar

    拷贝 sbt-launch.jar 到任意目录,因为我们想在这个目录中解压 sbt-launch.jar 文件,解压命令如下:

    unzip -q ./sbt-launch.jar
    

    这里的 "-q" 的作用主要是不显示命令的执行过程,解压后文件详情如下:

    因为我们没有指定解压到具体的路径,所以jar包中的文件都解压到当前路径了,不过这对我们的操作并没有什么影响。(刚刚还准备偷个懒,不重复演示一遍,结果 unzip 命令写成了 uzip ,还好实验了下,不然对于不熟悉 linux 的用户来说肯定会不知所措,写博客也得对读者负责啊,否则错误的教程可能会对读者造成不必要的影响)

  • 删除 sbt-launch.jar 文件

    上述目录中的 sbt-launch.jar 文件在我们执行完解压操作之后没有什么作用了,我们将它删除,因为后面打包的时候会生成一个新的 sbt-launch.jar 文件,删除命令如下:

    rm sbt-launch.jar
    
  • 修改 sbt.boot.properties 文件

    sbt.boot.properties 文件所在的路径如下:

    我们用 vi 命令来修改 sbt.boot.properties 文件,不熟悉 vi 的读者可以自行百度了解。

    上面两处标红的地方是我们需要修改的,修改的方式也很简单,就是把 https 中的 s 去掉,因为用 https 的方式国内的网络无法访问,不信的读者可以讲上述网址复制到浏览器中进行测试,我测试的时候如果使用 https 是无法打开网页的,但是取消s就可以了,因为网络环境存在差异,不保证每个人都得到同样的结果。修改后的文件内容如下:

    ps:如果有读者打开过参考地址的可能会产生疑问,为什么与原文中修改的方式不一样,因为原文中还添加了 oschina 的源仓库地址,而我这里没有添加,仅仅只是修改了 https ,因为现在 oschina 的源仓库已经无法访问了,所以添加上去也没什么用,虽然同一个问题在网上有很多教程,但是由于环境的改变,老的教程可能已经失效了,所以建议读者一般多参考最新的教程,这样才与自身的开发环境更接近

  • 重新打包

    修改好配置文件之后,直接在上面进行解压的那个路径下进行打包,命令如下:

    jar -cfM sbt-launch.jar .
    

    可以参考我的控制台:

    执行命令之后当前目录下就会出现 sbt-launch.jar 文件了。

  • 覆盖原来的 sbt-launch.jar 文件

    现在我们已经修改好了源仓库的地址,覆盖掉旧的 sbt-launch.jar 文件就可以了,这里旧的 sbt-launch.jar 指的是如下路径的jar包:

测试

通过上述操作之后,我们就可以测试了,在控制台上输入如下命令

sbt sbt-version

ps:如果你没有配置SBT的环境变量请在SBT的bin目录下执行该命令,初次执行该命令会下载很多jar包,请耐心等待。
我的测试结果:


上面的操作只解决了 SBT 源仓库的问题,关于 Spark 的源码如何导入 IntelliJ IDEA 中,请期待我后续的文章。

发表评论

电子邮件地址不会被公开。 必填项已用*标注