开源软件的代码开源在github这类公开的代码仓库,这给人一种错觉,让咱们认为能够随便的应用开源软件,其实开源软件有license协定,敌对的协定比方Apache 协定,能够在商业软件中应用,不开源,而像GPL协定,一旦应用就必须开源。

商业软件产品不可避免会应用大量的开源组件,但大部分状况不开源,所以在上线前有必要查看组件的license,比方是否依赖GPL。最终上线前可能应用内部商业软件进行扫描,比方Black Duck和Fossa,然而在小守业公司或者让商业银行扫描前,能够采纳开源软件进行预扫描,上面简略介绍调研的开源license扫描软件状况。

"Linux基金会企业开源指南"提供了开源我的项目相干的组件,从中找到license相干的开源工具,包含LicenseFinder、scancode-toolkit、fossology。测试中发现,scancode-toolkit、fossology是对本我的项目内代码的license进行格局查看,不满足咱们的须要。LicenseFinder在测试过程中有”执行mvn失败“的问题,因而也无奈应用。Linux基金会举荐的开源我的项目在这次需要前全军覆没了。

采纳maven的plugin,license-maven-plugin,后果很香。应用办法,这篇文章里写的很分明 ”利用 maven 自动化检测 License“。其实,LicenseFinder底层源码也依赖了license-maven-plugin。

应用gradle构建的我的项目,能够思考License Gradle Plugin, 另外还有google公布的plugin,oss-licenses-plugin

plugin根本的原理都是,下载并扫描依赖库的pom文件或者META_INF文件夹里的LICENSE.md。极少数依赖我的项目里没有版本阐明,这部分在license-maven-plugin的后果里有特地阐明,这时能够手动到maven仓库里查看。在测试中发现这样的包其实在maven仓库里也没有license,因为依赖库信息就是从maven仓库下载的。

集体认为license-maven-plugin的扫描办法以及数据源是牢靠的,扫描后果能作为license依赖状况的反对数据。