我们的团队正在将 sbt 0.13.15 和 JDK 1.8 用于一个项目,该项目自 2019 年以来就没有被触及过。我们只需要更新它以使其能够进行小升级(这不再是问题)并且不更新它完全地。部署过程一直乏善可陈,没有遵循我们当前的流程,所以这就是我正在做的事情。我们团队中没有人使用 scala 或 sbt,因为最初的开发人员多年前就离开了团队。所以我自己解决这个问题。我有几个问题:
sbt compile
和sbt test
的编译有区别吗?据我的理解(见命令表): https://alvinalexander.com/scala/sbt-how-to-compile-run-package-scala-project/
我也用过这个,但没有那么有用: https://www.scala-sbt.org/0.13/docs/Running.html
sbt test
将编译代码然后运行测试。基本上是在做sbt compile test
吗?所以没有区别吗?
同样,是否有必要在另一个命令之前使用
clean
命令,例如sbt clean test
,如果之前没有运行过?
同样,如果我做
sbt some_folder:dist
来创建我的项目的 zip,如果在该命令之前没有运行任何内容,我是否需要包含 clean
或 compile
命令?运行 sbt some_folder:dist
编译代码然后打包到指定的目标文件夹(我假设是,但想确定)?
最后,单独执行命令(如
sbt clean compile test
)与仅执行一个命令(如sbt test
)在性能或时间上是否存在差异?
我正在尝试这样做:
timeout_duration=30m # in minutes
success_code=0
export SBT_OPTS="-Xms2024m -Xmx2024m -XX:ReservedCodeCacheSize=128m -XX:MaxPermSize=256m"
if timeout $timeout_duration sbt test; [ $? != $success_code ]; then
echo -e "\n\n${RED}>> Tests for '${branch}' branch timed out after '${timeout_duration}' to prevent concourse from hanging."
echo -e ">> Error code: $?${NO_COLOR}"
exit $?
fi
但它似乎正在下载插件/依赖项但随后挂起。关于如何解决这个问题的任何想法?我们在技术上不需要它,但拥有它真是太好了。
当我正常运行
sbt test
命令时,它工作正常。使用 timeout
包装器命令似乎是问题所在。即使我在 IF 块之前在单独的行上执行它。
我已经在docker容器中运行了命令,并尝试比较基本相同的命令的时间。