在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文件中引用它。