你如何从构build+使用simple-build-tool发布的工件中删除_ <scala-version>后缀?

我正在使用简单的构build工具来构build一些Java-only项目。 当我使用sbt publish-local发布项目中的工件时,生成的工件将Scala版本附加到他们的名字上。 对于Scala项目来说,这是有道理的,但是由于这些只是Java项目,所以没有。 我将如何禁用Scala版本的这个后缀? 或者我可以吗?

作为参考,我使用sbt 0.11.1,Scala 2.9.1和一个.sbt文件进行构buildconfiguration(尽pipe转移到完整的项目configuration将是没有问题的)。

在查看Artifact.artifactName如何实现并最终被使用之后,似乎closures这个方法的方法是为crossPath设置指定false。 这在xsbt wiki上的一个快速configuration示例中有logging。

http://www.scala-sbt.org/release/docs/Examples/Quick-Configuration-Examples

// disable using the Scala version in output paths and artifacts crossPaths := false 

这在修改默认工件的xsbt wiki中有logging。 从该页面:

例如,要生成没有分类器或交叉path的最小名称:

 artifactName := { (sv: ScalaVersion, module: ModuleID, artifact: Artifact) => artifact.name + "-" + module.revision + "." + artifact.extension } 

虽然接受的答案是严格正确的,但您绝对不应该在公开发布的Scala工件crossVersions设置为false 。 embedded式scala版本是一个重要的兼容性function,因为不同版本的Scala库可能不是二进制兼容的。

只为项目设置crossVersionsfalse ,就像问题中那些严格Java的项目一样。

我知道这个问题很老,但我一直在问自己同样的问题,现在有一个非常简单的方法。 你所要做的就是用%代替%%声明依赖关系:

%:用于从您提供的string构build常春藤模块ID的方法。

%%:在groupID之后使用时,会自动将项目的Scala版本(如_2.10)添加到工件名称的末尾。

http://alvinalexander.com/scala/sbt-how-to-manage-project-dependencies-in-scala