首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么默认运行任务不选择自定义配置中的设置?

为什么默认运行任务不选择自定义配置中的设置?
EN

Stack Overflow用户
提问于 2014-07-27 12:42:06
回答 1查看 236关注 0票数 0

我使用从0.13.6-SNAPSHOT的最新来源构建的sbt 提交5b070b9dcc1dea 25106573a86167517e5a8dc8d4

这个问题是在我对如何更改play/sbt下自定义配置的设置值?做出回应时出现的。

我是build.sbt

代码语言:javascript
运行
复制
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配置?

见下列会议:

代码语言:javascript
运行
复制
> 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中删除以下行

代码语言:javascript
运行
复制
run <<= Defaults.runTask(fullClasspath in Mock, mainClass in Mock, runner in Mock)

这是对构建定义的唯一更改。没有其他文件被碰过。

代码语言:javascript
运行
复制
> 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配置?

EN

回答 1

Stack Overflow用户

发布于 2014-07-27 13:03:14

请使用发布的版本来问问题,比如0.13.5。

如果运行inspect命令,那么在从build.sbt中删除run <<= ....时,您显然没有定义run <<= ....任务。

代码语言:javascript
运行
复制
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任务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24981062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档