【问题标题】:Finding all dependencies in a jar查找 jar 中的所有依赖项
【发布时间】:2016-03-08 03:42:08
【问题描述】:

在我的程序中使用第三方库之前,我想确保它包含的所有材料对我来说都是合法的。例如我有来自 repo1.maven.org 的jline jar

我想确认它有哪些包,所以我运行以下命令:

$ unzip -l jline-2.13.jar
 Length      Date    Time    Name
---------  ---------- -----   ----
        0  08-10-2015 18:32   META-INF/
      989  08-10-2015 18:32   META-INF/MANIFEST.MF
        0  08-10-2015 18:32   jline/
... // more jline files
        0  08-10-2015 18:32   META-INF/maven/
... // more maven files
        0  08-10-2015 18:32   org/
        0  08-10-2015 18:32   org/fusesource/
        0  08-10-2015 18:32   org/fusesource/hawtjni/
... // more hawtjni files
        0  08-10-2015 18:32   org/fusesource/jansi/
... // more jansi files
---------                     -------
   549270                     133 files
$

从这个输出中我看到使用了 jline、hawtjni 和 jansi,所以我去那里找到许可证文件:

我还应该做些什么来确保不使用其他包吗?


额外的问题:因为这些都是 Apache 和 BSD 许可证(我不编辑它们的内容或显示它们的产品名称),我是否只需要说明这些库在我的项目中使用并包含它们各自的许可证? 在合法的堆栈交换中问这个问题可能会更好。

【问题讨论】:

  • 为什么不用像 Maven 这样的构建工具而不必担心这个呢?因为这个依赖树可以很快变得非常高。

标签: java jar packages


【解决方案1】:

给定库的许可证应声明或包含与它捆绑/包含的其他依赖项的许可证。如果库具有传递的 maven 依赖项,那么您需要检查它的 pom.xml 文件以查看它在构建时还引入了什么,并分别举例说明这些许可。

【讨论】:

  • 对于这个具体的例子,jline 的 pom.xml 使用了 <scope>test</scope> 列出的库,例如 easymock 和 powermock。这些不存在于 jar 的解压缩输出中。所以我认为这意味着我不需要为他们提供许可?
  • 为避免提供糟糕的法律建议,我认为您的问题最好由专门从事开源许可的律师来回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-22
  • 2010-09-16
  • 1970-01-01
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多