我们需要获得服务依赖项的所有许可证。虽然很容易从report plugin(或mojohaus' license-maven-plugin)获取它们,但我们的律师希望我们实际访问每个依赖项的来源并获取许可文件。你知道我们怎么做到这一点吗?
作为替代方案 - 如何获取工件的scm连接URL?我可以使用这些信息自行完成这个过程。
答案 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>
...
我希望对此有一些反馈。