【发布时间】:2014-10-15 19:29:20
【问题描述】:
我一直在用 Scala 编写一小组命令行程序。尽管 开发我使用 SBT,并在控制台中运行测试程序。在 此时程序的启动时间很快(在初始编译后重新运行时);几乎瞬间,甚至 有额外的依赖。
现在我正尝试在我的系统上在 sbt 之外实际使用它们,速度有明显的滞后。我正在寻找方法 减少这种情况,因为这些实用程序的性质几乎不需要延迟。
到目前为止我达到的最佳速度是通过使用Drip。我通过使用Pack 将所有依赖项包含在 lib 目录中,然后通过执行如下 shell 脚本运行:
#!/bin/sh
SCRIPT=$(readlink -f "$0")
SCRIPT_PATH=$(dirname "$SCRIPT")
PROG_HOME=`cd "$SCRIPT_PATH/../" && pwd`
CLASSPATH_SUFFIX=""
# Path separator used in EXTRA_CLASSPATH
PSEP=":"
exec drip \
-cp "${PROG_HOME}/lib/*${CLASSPATH_SUFFIX}" \ # Add lib directory to classpath
TagWorkspace "$@" # TagWorkspace is the main class
这仍然明显比从 SBT 中调用 run 慢。 我很好奇为什么 SBT 能够以如此之快的速度启动应用程序,以及我是否有办法利用它的策略或 SBT 本身,即使这意味着要保持一个长期的生存过程来实际运行命令.
【问题讨论】: