首页 文章

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

提问于
浏览
63

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

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

4 回答

  • 8

    在查看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
    
  • 8

    这是在Modifying default artifacts下的xsbt wiki上记录的 . 从该页面:

    例如,要生成没有分类器或交叉路径的最小名称:artifactName:= {(sv:ScalaVersion,module:ModuleID,artifact:Artifact)=>
    artifact.name“ - ”module.revision“ . ” artifact.extension
    }

  • 83

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

    %:用于从您提供的字符串构造Ivy模块ID的方法 . %%:在groupID之后使用时,它会自动将项目的Scala版本(例如_2.10)添加到工件名称的末尾 .

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

  • 3

    虽然接受的答案是严格正确的,但您不应该在公开发布的Scala工件上设置 crossVersionsfalse . 嵌入式scala版本是一个重要的兼容性功能,因为不同版本的Scala库可能不是二进制兼容的 .

    仅将 crossVersions 设置为 false 用于项目,如问题中的项目,仅限Java .

相关问题