修改deliverLocal任务生成的常春藤文件的名称

时间:2013-11-22 19:22:51

标签: sbt

在SBT 0.13中,修改SBT deliverLocal任务生成的常春藤文件的文件名(文件名模式)的最简单方法是什么?我想从文件名中删除版本号,例如ivy.xml而不是ivy-0.1-SNAPSHOT.xml。我也想将它应用于我的构建中的其他项目。我不想在发布时修改常春藤文件的名称,只有在交付到项目的目标目录时才会这样。

此刻,我发现以下情况有效,但它有点过分,丑陋并且违反DRY:

def deliverPattern(outputPath: File): String = (outputPath / "[artifact](-[classifier]).[ext]").absolutePath

def deliverConfig(outputDirectory: File, status: String = "release", logging: UpdateLogging.Value = UpdateLogging.DownloadOnly) =
  new DeliverConfiguration(deliverPattern(outputDirectory), status, None, logging)

deliverLocalConfiguration := deliverConfig(crossTarget.value, status = if (isSnapshot.value) "integration" else "release", logging = ivyLoggingLevel.value)

更新

我已经简化了上面的内容,以引用现有deliverLocalConfiguration中的值。我目前的工作解决方案如下:

deliverLocalConfiguration := {
  val dlc = deliverLocalConfiguration.value
  new DeliverConfiguration((crossTarget.value / "[artifact].[ext]").absolutePath, dlc.status, dlc.configurations, dlc.logging)
}

我把它放在Common.scala中,并在我所有项目的sbt文件中引用它。

0 个答案:

没有答案