Debugging 每个项目的SBT调试端口

Debugging 每个项目的SBT调试端口,debugging,scala,sbt,Debugging,Scala,Sbt,如何根据每个项目更改SBT调试端口 我可以将调试JVM选项添加到环境变量SBT\u OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 但这将适用于所有SBT实例,如果我想同时在调试中为两个单独的项目运行SBT,则会出现此错误,因为端口已在使用中: ERROR: transport error 202: bind failed: Address already in use 通过自制修改sbt附

如何根据每个项目更改SBT调试端口

我可以将调试JVM选项添加到环境变量
SBT\u OPTS

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
但这将适用于所有SBT实例,如果我想同时在调试中为两个单独的项目运行SBT,则会出现此错误,因为端口已在使用中:

ERROR: transport error 202: bind failed: Address already in use

通过自制修改sbt附带的sbt脚本,我制作了这个脚本,让您可以启动sbt并指定调试端口,如下所示:

sbt-debug 5005


美好的这没什么大不了的,但我没有对sbt-launch.jar的路径进行硬编码,从而使它更通用了一点。我将SBT_LAUNCH=行替换为:
SBT_LAUNCH=$(grep-oE'/[^]+SBT LAUNCH.jar'$(哪个SBT))
#!/bin/sh
test -f ~/.sbtconfig && . ~/.sbtconfig

SBT_LAUNCH=/usr/local/Cellar/sbt/0.12.1/libexec/sbt-launch.jar
# Take leading integer as debug port and not sbt args
DEBUG_PORT=$1
SBT_ARGS=`echo "$@" | grep -oE "[^0-9].*"`

exec java -Xmx512M -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=${DEBUG_PORT} ${SBT_OPTS} -jar $SBT_LAUNCH $SBT_ARGS