【问题标题】:sbt compile in Compile meaningsbt compile中的编译含义
【发布时间】:2018-12-31 17:58:20
【问题描述】:

谁能解释一下 compileCompile 在这个神秘的 sbt 成语中的含义:

compile in Compile <<= (compile in Compile).dependsOn(Def.task { 
  println("task is running") // or whatever code here in the body
})

【问题讨论】:

    标签: sbt


    【解决方案1】:
    • compile 表示编译任务,而不是 package
    • Compile 表示编译配置(源自/匹配 Apache Ivy 的配置),而不是 Test

    如果您考虑compile in Test 可能更容易理解,它是compile 任务范围为Test 配置并因此编译测试源。

    此外,“无作用域”compile 键实际上并未在 sbt 的默认值中定义,因此当您在 shell 中执行 compile 时,由于 sbt 的“委托规则”,实际执行的是 compile in Compile,您可以在Scope delegation sbt 文档中阅读。

    【讨论】:

    • 好吧,这仍然使事情尽可能神秘:) 为什么compile 任务会有Test 配置? compile 任务如何做一些事情但编译......这些事情在回答这个问题时需要变得非常清楚
    • compile in Test 将编译您的测试源。 compile 除了编译之外什么都不做,但它是关于它编译的内容。
    • 这还是比较模糊的。如果我知道(compile in Compile) 在这里扮演什么角色,也许我可以编写一个有凝聚力的答案。
    • @matt 这可能对你有帮助,这里是“编译”TaskKey scala-sbt.org/0.13/sxr/sbt/Keys.scala.html#sbt.Keys.compile 和“编译”配置scala-sbt.org/0.13/sxr/sbt/… 的配置源@ 测试配置扩展了运行时配置,运行时配置是扩展为编译配置
    • 还阅读了范围和键scala-sbt.org/0.13/tutorial/…这里的范围是(编译),键是(编译)
    猜你喜欢
    • 2014-12-14
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 2019-11-16
    • 1970-01-01
    • 2016-08-16
    相关资源
    最近更新 更多