获取依赖项许可证

时间:2015-06-23 08:52:03

标签: maven licensing maven-scm

我们需要获得服务依赖项的所有许可证。虽然很容易从report plugin(或mojohaus' license-maven-plugin)获取它们,但我们的律师希望我们实际访问每个依赖项的来源并获取许可文件。你知道我们怎么做到这一点吗?

作为替代方案 - 如何获取工件的scm连接URL?我可以使用这些信息自行完成这个过程。

3 个答案:

答案 0 :(得分:2)

我开发了一个网站https://www.licensediscovery.io,该网站将帮助Java开发人员找到他们及其软件所依赖的工件的许可证。

Licensediscovery.io使用户可以使用以下任何语法搜索Java工件:Maven,Gradle,SBT,Ivy,Leiningen,Grape,Buildr或plain。 Licensediscovery.io将收集,解析并呈现所有可识别的Java工件,并将它们及其许可证呈现在表格,条形图,甜甜圈图或网络图中。

LicenseDiscovery.io是最近发布的,仍处于早期阶段。但是,它可能会解决您的问题。

反馈也将非常感谢。

答案 1 :(得分:1)

为了使事情正确,您需要首先为您依赖的每个Jar收集所有二进制和源JAR。 这可能是一个好的开始:http://maven.apache.org/components/plugins/maven-dependency-plugin/(我不是专家)。它似乎也能够获取源。 你可能想要运行这样的东西,但我不确定消息来源在哪里:

mvn dependency:sources

另请参阅:https://stackoverflow.com/a/11361413/302521

获取这些内容后,您可以安装ScanCode(https://github.com/nexB/scancode-toolkit),然后为包含您的jar的目录运行extractcode以解压缩所有内容,然后scancode --format html-app <you jar dir> my-jars.html获取详细报告许可和版权:在浏览器中打开my-jars.html。

披露:我是ScanCode的作者之一,顺便说一句,我正在努力让ScanCode完全符合您的要求:解析Maven dep树,获取所有Jars和源,最后收集POM元数据并对二进制文件进行扫描+来源。你有兴趣参与进来吗?

关于scm连接,它在POM中并不一致,所以我不建议使用该路由。源Jars的频率更低。

答案 2 :(得分:1)

我创建了mojohaus maven许可插件的分支。在这里讨论: https://github.com/mojohaus/license-maven-plugin/issues/357。 未经严格测试,很可能还剩下一些小错误,但就我的目的而言,它仍然有效。但是要警告! 专业说法:与ScanCode相比,该解决方案超级快,后者可以扫描暴力破解甚至二进制文件,并且还需要在扫描前提取所有 档案。

该插件将其可以获取的所有内容(包括许可证和注意文本文件)写入target\generated-resources\licenses.xml。 只需从https://github.com/JD-CSTx/license-maven-plugin中克隆它即可。 要快速构建并安装它以进行测试,请使用mvn install -DskipITs=true -DskipTests=true

目标是license:aggregate-download-licenses,版本是2.1.0-SNAPSHOT,选项是extendedInfo

它也可以使用选项writeExcelFile写入excel文件,请注意:由于32,767个字符的限制,Excel单元格被切断了。

为项目pom.xml配置:

<plugin>
  <groupId>org.codehaus.mojo</groupId>                   
  <artifactId>license-maven-plugin</artifactId>
    <version>2.1.0-SNAPSHOT</version>
    <configuration>
       <includeTransitiveDependencies>true</includeTransitiveDependencies>                       
       <verbose>true</verbose>
       <!-- New -->
       <extendedInfo>true</extendedInfo>
       <!-- New -->
       <writeExcelFile>true</writeExcelFile>
       ...

我希望对此有一些反馈。