`sbt test` 和 `sbt some_folder:dist` 是否需要 sbt `clean` 和 `compile` 命令?还有更多问题

问题描述 投票:0回答:0

我们的团队正在将 sbt 0.13.15 和 JDK 1.8 用于一个项目,该项目自 2019 年以来就没有被触及过。我们只需要更新它以使其能够进行小升级(这不再是问题)并且不更新它完全地。部署过程一直乏善可陈,没有遵循我们当前的流程,所以这就是我正在做的事情。我们团队中没有人使用 scala 或 sbt,因为最初的开发人员多年前就离开了团队。所以我自己解决这个问题。我有几个问题:

  1. 无论如何,
    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
吗?所以没有区别吗?

  1. 同样,是否有必要在另一个命令之前使用

    clean
    命令,例如
    sbt clean test
    ,如果之前没有运行过?

  2. 同样,如果我做

    sbt some_folder:dist
    来创建我的项目的 zip,如果在该命令之前没有运行任何内容,我是否需要包含
    clean
    compile
    命令?运行
    sbt some_folder:dist
    编译代码然后打包到指定的目标文件夹(我假设是,但想确定)?

  3. 最后,单独执行命令(如

    sbt clean compile test
    )与仅执行一个命令(如
    sbt test
    )在性能或时间上是否存在差异?

  4. 我正在尝试这样做:

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 块之前在单独的行上执行它。

  1. 还有什么我应该注意但不明显的吗?

我已经在docker容器中运行了命令,并尝试比较基本相同的命令的时间。

sbt
© www.soinside.com 2019 - 2024. All rights reserved.