Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 是否忽略自定义任务和范围中的SBT工件?_Scala_Sbt - Fatal编程技术网

Scala 是否忽略自定义任务和范围中的SBT工件?

Scala 是否忽略自定义任务和范围中的SBT工件?,scala,sbt,Scala,Sbt,在SBT中,如果我有一个任务应该生成包含一堆文件的zip/jar/war,我会使用Defaults.packageTaskSettings方法来设置该任务。情况如下: object BuildDef extends Build { val makeThings = TaskKey[File]("make-things") val defaultMakeSettings = (baseDirectory) map { base => Seq( (base / "thing

在SBT中,如果我有一个任务应该生成包含一堆文件的zip/jar/war,我会使用
Defaults.packageTaskSettings
方法来设置该任务。情况如下:

object BuildDef extends Build {

  val makeThings = TaskKey[File]("make-things")

  val defaultMakeSettings = (baseDirectory) map { base => Seq(
    (base / "thingA") -> "thingy",
    (base / "thingB") -> "thingz"
  )}

  val project = Project("stuff", file("."))
    .settings(Defaults.packageTaskSettings(makeThings, defaultMakeSettings): _*)
    .settings(
      artifact in makeThings <<= moduleName{ Artifact(_, "zip", "zip") }
    )
}
当我运行
scope:make things
时,它似乎忽略了该设置并使用了旧设置:

> show scope:make-things
[info] ...\target\scala-2.9.2\stuff_2.9.2-0.1-SNAPSHOT.zip
为什么它忽略了我的设置?我希望它已经生成了
东西。范围是2.9.2-0.1-SNAPSHOT.zip

欲了解更多信息

> show scope:make-things::artifact
[info] Artifact(stuff.scoped,zip,zip,None,List(),None,Map())

> show scope:make-things::artifact-path
[info] ...\target\scala-2.9.2\stuff_2.9.2-0.1-SNAPSHOT.zip

我意识到我可能可以直接更改
工件路径
,但我已经放弃了xsbt web插件为其
包战争
任务所做的工作,而且它不会触及
工件路径
。我想以“正确”的方式来做这件事。

几乎在我发布问题的时候,我就发现了这一点。关键是使用
inConfig
方法包装包设置,如下所示:

.settings(
  artifact in (Scope, makeThings) <<= moduleName{Artifact(_,"zip","zip")}
)
.settings(
  inConfig(Scope){
    Defaults.packageTaskSettings(makeThings, defaultMakeSettings)
  }: _*
)

谢谢你做我的调试器小鸭。
.settings(
  artifact in (Scope, makeThings) <<= moduleName{Artifact(_,"zip","zip")}
)
.settings(
  inConfig(Scope){
    Defaults.packageTaskSettings(makeThings, defaultMakeSettings)
  }: _*
)
...target\scala-2.9.2\stuff_2.9.2-0.1-SNAPSHOT-scope.zip