在build.sbt / build.scala之外为SBT设置ClassPath

时间:2012-07-24 07:53:49

标签: log4j classpath sbt slf4j

我正在制作一个使用SLF4J的基本程序。使用SLF4J的要点是使用java类路径为您正在使用的日志记录后端(以及该记录器的属性文件)手动指定.jar文件。这意味着与slf4j相关的.jar(基础slf4j之外)未在SBT项目中指定为依赖项。

问题是当你在sbt中执行run命令时,它会将类路径设置为/usr/local/Cellar/sbt/0.11.3-2/libexec/sbt-launch.jar(我已经通过mac上的自制软件安装了sbt)

我的问题是,有没有办法将SBT的类路径目录(当在scala应用程序上运行时)设置到特定目录而不修改实际的SBT项目(可能使用属性文件?)当我使用时sbt命令运行?目前为了使用日志记录测试我的应用程序,我必须使用proguard插件为SBT创建一个min.jar并手动运行这样的命令(这非常繁琐)

java -Djava.ext.dirs=<some_path> -Dlog4j.configuration=<some_path> -jar scheduler_2.9.1-1.0.min.jar

这没有问题,以及应用程序在生产中的用途。但是,在使用sbt run命令时,我不想测试我的应用程序(查看日志记录是否有效),我不知道如何在不更改build.sbt / Build.scala文件的情况下配置SBT来执行此操作(其中在生产中使用它会明显引起问题)

请注意,如果我可以根据需要指定类路径,则不需要-Dlog4j.configuration。我已经尝试将-DJava.ext.dirs=<some_path>放在启动sbt的命令上,但不出所料,它对run命令没有影响。

1 个答案:

答案 0 :(得分:0)

我不知道这是否是一个很好的解决方案,但您可以使用添加的user.sbt设置在工作目录中添加fullClasspath in Runtime