在sbt

时间:2015-12-24 16:27:14

标签: sbt sbt-native-packager

假设我有一个使用第三方库的项目,例如scopt是根据麻省理工学院的许可证发布的。

当使用sbt-native-packager生成可分发的tarball,zip,deb等时,我正在重新分发所有依赖项的副本。在重新分发时,我需要通过我的依赖项的许可条件,包括该许可证/版权声明/许可条件的副本(在许可证中通常称为以二进制形式重新分发)。顺便说一句,sbt-native-packager还包括Scala标准库的副本,根据其3条款BSD样式许可证,它也不包括适当的许可条件/版权声明。

默认情况下,sbt-native-packager在生成的发行版中不包含此类许可证副本/版权声明/ ....

我正在寻找的是一种自动包含所有(包括传递)依赖关系的所有许可/版权声明的便捷方式。

...或者,我想,如果我发布了由sbt-native-packager生成的原始tarball,那么我将违反法律。 GitHub发布页面,不是吗?

修改

我想,为了让sbt-native-packager将所有许可证/版权声明注入其创建的发行版中,很难有一般的方法,因为无论是jar存档还是常春藤,maven,sbt等。拥有将许可证和版权声明添加到存档的一流支持。

到目前为止,我看到的唯一建议是Apache Software Foundation。他们建议put the license at the top of the jar archive(将裸露的许可文件加入)和include a NOTICE file as well(包含所有版权声明)。我认为这个建议很好。

我想,开始时应该更好地支持处理所有这些合法的东西。像sbt这样的构建工具应该更好地支持这一点,并且更加明显,例如检查所有生成的jar存档,如果它们不包括两个 LICENSE和NOTICE文件错误,那么就会出现包之类的任务。

1 个答案:

答案 0 :(得分:1)

回答你的问题:在sbt-native-packager中,AFAIK无法以一般方式处理许可证。例如。将它们放在一个单独的目录中或列出它们。

话虽如此,我认为出于几个原因,这并不是必需的。我不是主张,所以这只是我对此的理解。

  1. 如果您有git tarball,则不包含任何依赖项。只有声明它们的构建文件。所以你没有分发任何代码。所以这应该没问题

  2. 当您构建可执行二进制文件时,不仅包括代码,还包括整个jar,通常包括所有licenese和版权提示。从技术上讲,你已经包含了一切。

  3. 我还没有看到围绕该主题的任何问题,或者像maven / gradle这样的其他构建工具处理此问题。解决方案是什么样的?如果这是一个问题?

    更新

    我发现这个sbt-license-report plugin应该会生成您需要的信息。如果这是您正在寻找的,我很乐意合并更新sbt-native-packager文档的拉取请求:)