我使用从0.13.6-SNAPSHOT
的最新来源构建的sbt 提交5b070b9dcc1dea 25106573a86167517e5a8dc8d4。
这个问题是在我对如何更改play/sbt下自定义配置的设置值?做出回应时出现的。
我是build.sbt
lazy val Mock = config("mock") extend Compile
lazy val mock = inputKey[Unit]("run in mock mode")
lazy val mockSettings = inConfig(Mock) {
Classpaths.configSettings ++
Seq(
unmanagedClasspath += baseDirectory.value / "mock-resources",
mock <<= run in Mock,
run <<= Defaults.runTask(fullClasspath in Mock, mainClass in Mock, runner in Mock)
)
}
lazy val p = (project in file("src/")).configs(Mock).settings(
mockSettings: _*
)
为什么自定义run
配置需要自定义Mock
任务?为什么run
不选择unmanagedClasspath
作为Mock
配置?
见下列会议:
> mock
[info] Running Hello
resource: file:/Users/jacek/sandbox/mock-config/src/mock-resources/a.properties
[success] Total time: 0 s, completed Jul 27, 2014 2:26:07 PM
> p/mock:run
[info] Running Hello
resource: file:/Users/jacek/sandbox/mock-config/src/mock-resources/a.properties
[success] Total time: 0 s, completed Jul 27, 2014 2:26:34 PM
> p/mock:mock
[info] Running Hello
resource: file:/Users/jacek/sandbox/mock-config/src/mock-resources/a.properties
[success] Total time: 0 s, completed Jul 27, 2014 2:27:01 PM
效果很好。
从build.sbt
中删除以下行
run <<= Defaults.runTask(fullClasspath in Mock, mainClass in Mock, runner in Mock)
这是对构建定义的唯一更改。没有其他文件被碰过。
> reload
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Set current project to mock-config (in build file:/Users/jacek/sandbox/mock-config/)
> p/mock:mock
[info] Running Hello
resource: null
[success] Total time: 0 s, completed Jul 27, 2014 2:28:31 PM
> p/mock:run
[info] Running Hello
resource: null
[success] Total time: 0 s, completed Jul 27, 2014 2:28:36 PM
> mock
[info] Running Hello
resource: null
[success] Total time: 0 s, completed Jul 27, 2014 2:28:39 PM
为什么默认的run
任务不适用于自定义Mock
配置?
发布于 2014-07-27 13:03:14
请使用发布的版本来问问题,比如0.13.5。
如果运行inspect
命令,那么在从build.sbt
中删除run <<= ....
时,您显然没有定义run <<= ....
任务。
p> inspect mock:run
[info] Input task: Unit
[info] Description:
[info] Runs a main class, passing along arguments provided on the command line.
[info] Provided by:
[info] {file:/Users/foo/sbt-so-24981062/}p/compile:run
[info] Defined at:
[info] (sbt.Defaults) Defaults.scala:731
这是因为Classpaths.configSettings
不包括run
任务。
https://stackoverflow.com/questions/24981062
复制相似问题