我正在使用simple-build-tool构建一些仅限Java的项目。当我使用sbt publish-local从项目中发布工件时,生成的工件会在其名称后附加Scala版本。使用Scala项目这是有道理的,但由于这些只是Java项目,所以它没有。如何禁用Scala版本的后缀?或者我可以吗?
作为参考,我使用sbt 0.11.1,Scala 2.9.1和.sbt文件进行构建配置(虽然转移到完整的项目配置没有问题)。
答案 0 :(得分:84)
在查看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
答案 1 :(得分:9)
这是在Modifying default artifacts下的xsbt wiki上记录的。从该页面:
例如,要生成没有分类器或交叉路径的最小名称:
artifactName := { (sv: ScalaVersion, module: ModuleID, artifact: Artifact) => artifact.name + "-" + module.revision + "." + artifact.extension }
答案 2 :(得分:9)
我知道这个问题很老,但我一直在问自己同样的问题,现在实际上有一个非常简单的方法。您所要做的就是使用%
而不是%%
声明依赖关系:
%:用于从您的字符串构造Ivy模块ID的方法 供应。
%%:在groupID之后使用时,会自动添加您的 项目的Scala版本(例如_2.10)到工件的末尾 名。
http://alvinalexander.com/scala/sbt-how-to-manage-project-dependencies-in-scala
答案 3 :(得分:5)
虽然接受的答案是完全正确的,但您应该永远不会在公开发布的Scala工件上将crossVersions
设置为false
。嵌入式scala版本是一个重要的兼容性功能,因为不同版本的Scala库可能不是二进制兼容的。
仅为项目设置crossVersions
至false
,例如问题中的项目,仅限Java。