编译spark job server 时, 遇到sbt 编译 scala的情况 , 在idea sbt 换源时遇到的坑

在Windows10上编译Spark Job Server时,遇到sbt编译Scala的问题,由于repo1.maven.org源无法访问,尝试通过修改repositories和sbtconfig.txt文件换源无效。解决方案是利用IDEA的sbt shell,通过在_jvmopts文件中配置国内源,或者直接删除该文件,使得配置生效,确保在Windows和Linux环境下都能顺利编译。

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

编译spark job server 时, 遇到sbt 编译 scala的情况 , 在idea sbt 换源时遇到的坑
这里面的环境是windows10 ,非Linux

先说一下失败的几个情况

首先我是本地自己下载了一个sbt, 在idea的shell里面 使用sbt的命令进行操作
但是源一直是repo1.maven.org
而这个源却是用不了的
于是准备换源
一般网上的做法就是在用户根目录下的 .stb目录新建一个文件 repositories

写入新源

[repositories]
  local
  nexus-aliyun: http://maven.aliyun.com/nexus/content/groups/public
  typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
  sonatype-oss-releases
  maven-central
  sonatype-oss-snapshots

但是这样,哪怕重启也不起作用

也有人说在sbt home目录下的conf中修改sbtconfig.txt

-Dsbt.override.build.repos=true
-Dsbt.repository.config=C:/tools/sbt-1.2.7/sbt/conf/repositories

这也是不起作用,它们这些介绍不知道是歪打正着,还是怎么回事,感觉少了点东西

后面干脆找到一篇介绍 https://blog.youkuaiyun.com/kina2001/article/details/79027184
是直接使用idea的sbt-shell,
原理就是把这些配置信息显式写在vm的参数里,配置还是上面的配置,只是这里面显式的写进去
上面介绍的两个失败的方法,没有生效,估计是没有去读这些配置,缺少生效的条件, 都是想当然
没有实战的东西,抄一下就发上来, 耽误大家时间, 我这个是亲测的, 理解了问题就好解决了.

感谢阿里提供了国内源, 良心企业呀.
期望更多的公司能提供源, 以前开源中国提供的,后来又没有了, 让人心生不爽.

等有些时间去分析sbt.bat启动脚本时,发现了为啥配置sbtconfig.txt这个文件不起作用的原因了
在脚本里面, 只要_JAVA_OPTS被设置了值,就不会从CFG_OPTS取值, 而 CFG_OPTS 这个变量的数据就来自于
sbtconfig.txt

rem We use the value of the JAVA_OPTS environment variable if defined, rather than the config.
set _JAVA_OPTS=%JAVA_OPTS%
if “%_JAVA_OPTS%”=="" set _JAVA_OPTS=%CFG_OPTS%

在spark-jobserver的源码中发现文件 .jvmopts
这个文件存在后, 脚本会优先从这个文件中取配置信息,所有导致 我所使用的sbtconfig.txt不起作用, 这也是网上大量提到的配置文件, 这样的话就是说sprak-jobserver导致sbt的配置不起作用了,应用对编译工具产生了影响, 这算不算是个坑?

rem users can set JAVA_OPTS via .jvmopts (sbt-extras style)
IF EXIST .jvmopts FOR /F %%A IN (.jvmopts) DO (
  SET _jvmopts_line=%%A
  IF NOT "!_jvmopts_line:~0,1!"=="#" (
    SET JAVA_OPTS=%%A !JAVA_OPTS!
  )
)

找到这个原因后, 解决办法就简单了, 直接把配置信息写进这个文件 .jvmopts 就好了,或者删除.jvmopts文件
另外写.jvmopts文件有个好处, 在windows10自带的linux下, 可以灵活修改它, 使本地的windows跟linux都可以编译它, 而且打包脚本都是sh文件, 所以使用linux在本地打包会好很多

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值