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

Jam*_*mes 64 scala sbt

我正在使用simple-build-tool构建一些仅限Java的项目.当我使用sbt publish-local从项目中发布工件时,生成的工件会在其名称后附加Scala版本.使用Scala项目这是有道理的,但由于这些只是Java项目,所以它没有.如何禁用Scala版本的后缀?或者我可以吗?

作为参考,我使用sbt 0.11.1,Scala 2.9.1和.sbt文件进行构建配置(尽管转移到完整的项目配置也没问题).

Jam*_*mes 86

在查看Artifact.artifactName如何实现并最终使用之后,似乎关闭它的方法是为crossPath设置指定false.这在xsbt wiki上的一个快速配置示例中有记录.

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

// disable using the Scala version in output paths and artifacts
crossPaths := false
Run Code Online (Sandbox Code Playgroud)


Fra*_*oth 11

我知道这个问题已经过时了,但我一直在问自己同样的问题,现在实际上有一个非常简单的方法.您所要做的就是使用%而不是使用以下方式声明依赖项%%:

%:用于从您提供的字符串构造Ivy模块ID的方法.

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

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

  • 这种解决方案比公认的解决方案更好,因为您只需在Scala版本号有问题的地方更改依赖关系。通过将“ crosspaths”设置为false,您必须更改所有依赖项并手动添加Scala版本。 (2认同)

Pau*_*her 9

这是在修改默认工件下的xsbt wiki中记录的.从该页面:

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

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


gre*_*ons 5

尽管公认的答案是完全正确的,但您绝对不应设置crossVersionsfalse公开发布的Scala工件。嵌入式scala版本是一项重要的兼容性功能,因为不同版本的Scala库可能不是二进制兼容的。

只设置crossVersionsfalse了项目,就像那些有问题,只有严格的Java。