【问题标题】:sbt: publish generated sourcessbt:发布生成的源
【发布时间】:2022-03-16 00:15:42
【问题描述】:

我有一个项目,其中生成了部分源代码 (sourceGenerators in Compile)。我注意到(在大多数情况下是合理的)这些来源不是用publishLocalpublishSigned 发布的。在这种情况下,这是不幸的,因为当您将此项目/库用作依赖项时,即使已下载项目的其他源,您也无法在 IntelliJ 中查找源。

我可以配置 sbt 的发布设置以在 Maven -sources.jar 中包含生成的源吗?

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    所以,为了完整起见,这是我基于@pfn 的回答的解决方案:

    mappings in (Compile, packageSrc) ++= {
      val base  = (sourceManaged  in Compile).value
      val files = (managedSources in Compile).value
      files.map { f => (f, f.relativeTo(base).get.getPath) }
    }
    

    【讨论】:

      【解决方案2】:
      mappings in (Compile,packageSrc) := (managedSources in Compile).value map (s => (s,s.getName)),
      

      【讨论】:

      • 这会是++= 而不是:=,这样常规来源就不会被丢弃吗?
      • 是的,++= 是正确的。我对此的特殊用法是仅生成源而没有常规源,因此:=
      • 另外,如果有冲突,你需要正确设置路径,而不是s.getName
      【解决方案3】:

      就像@0__ 的答案,但移植到“新”sbt 语法,即没有弃用警告。

      Compile/packageSrc/mappings ++= {
        val base  = (Compile/sourceManaged).value
        val files = (Compile/managedSources).value
        files.map(f => (f, f.relativeTo(base).get.getPath))
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-08
        • 1970-01-01
        • 2017-08-28
        • 2014-10-08
        • 2013-01-20
        • 2015-10-20
        • 2017-02-03
        • 1970-01-01
        相关资源
        最近更新 更多