在我的程序中使用第三方库之前,我想确保它包含的所有 Material 对于我来说都是合法的。例如我有 jline jar来自 repo1.maven.org
我想确认它有哪些软件包,所以我运行以下命令:
$ 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,因此我去查找许可证文件:
- https://github.com/jline/jline2/blob/master/LICENSE.txt
- https://github.com/fusesource/hawtjni/blob/master/license.txt
- https://github.com/fusesource/jansi/blob/master/license.txt
我还应该做其他事情来确保不使用其他软件包吗?
<小时/>额外问题:因为这些都是 Apache 和 BSD 许可证(并且我不编辑它们的内容或显示它们的产品名称),我是否只需声明这些库在我的项目中使用并包含它们各自的许可证? 这可能在合法堆栈交换中更好地询问。
最佳答案
给定库的许可证应声明或包含与其捆绑/包含的其他依赖项的许可证。如果该库具有传递性 Maven 依赖项,那么您需要检查其 pom.xml 文件以查看它在构建时还引入了哪些内容,并分别举例说明了这些文件的许可证。
关于java - 查找jar中的所有依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35852407/