【问题标题】:Howto create a .jar including both sources (.java and .scala) and classes with sbt?如何使用 sbt 创建包含源(.java 和 .scala)和类的 .jar?
【发布时间】:2015-05-31 12:53:43
【问题描述】:

我希望sbt package 或任何变体从我的项目中生成一个“.jar”,其中还包括源文件(“.java”和“.scala”文件)。

这将是 packageBin 和 packageSrc 的混合。

我没有:

  • 找到任何可以做到这一点的任务?
  • 了解如何适配包任务
  • 也没有定义我的新任务来实现这一目标

感谢任何提示。

【问题讨论】:

标签: scala class jar sbt


【解决方案1】:

查看documentation,您可能应该在packageBin 范围内的mappings 键中添加内容。以下似乎对我有用:

mappings in (Compile, packageBin) ++= (mappings in (Compile, packageSrc)).value

【讨论】:

    【解决方案2】:

    以下是如何设置独立任务以使用二进制文件和源代码创建工件,而 packageBinpackageSrc 不受影响:

    val packageBinSrc = taskKey[File]("Produces an artifact containing both binaries and sources.")
    
    artifactClassifier in packageBinSrc := Some("binsrc")
    inConfig(Compile) {
      import Defaults._
      packageTaskSettings(packageBinSrc, concatMappings(packageBinMappings, packageSrcMappings))
    }
    

    如果您愿意,也可以将package 重新定义为使用packageBinSrc

    Keys.`package` := (packageBinSrc in Compile).value
    

    【讨论】:

    • 因为两个问题合二为一,所以我对这两个答案都很感兴趣。不幸的是,我必须将其中一个标记为“最佳”。我选择了最短的……非常感谢您的回答
    • 我认为您通过添加源代码来破坏packageBin 的意图,但可以确定的是设置代码较少。
    猜你喜欢
    • 1970-01-01
    • 2014-01-17
    • 2012-01-12
    • 2020-12-24
    • 2014-08-08
    • 2017-01-31
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    相关资源
    最近更新 更多