自动获取商业项目中所有依赖的开源工件的许可信息

Automatically get License Information of all dependent open source artifacts in a commercial project

我们公司有很多JEE后端应用部署到jfrog artifactory。每个项目都包含对其他 Maven 存储库源的一些依赖性,而这些资源又具有许多其他依赖性。所以当我使用其中一个依赖项时,比如

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>sample.ProjectA</groupId>
      <artifactId>Project-A</artifactId>
      <version>1.0</version>
      <scope>provided</scope>          
    </dependency>
  </dependencies>
</project>

Sample.ProjectA.Project-A 可能具有一些商业依赖性。 我看到 Maven 使用许可证字段来放置许可证信息

  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>

我还找到了一种使用报告信息插件获取 Maven 许可证的方法 maven-project-info-reports-plugin

现在告诉maven警告如果有任何商业许可证就太好了。有可能吗?

有几个 Maven 插件可以验证项目依赖项使用的许可证:

  • "ayoy-license-verifier-maven-plugin" (reference)
  • "khmarbaise/Maven-License-Verifier-Plugin" (reference)

但是,这种方法存在问题:

  • 一些 Maven 工件没有在它们的 POM 文件中声明许可证。
  • 这些插件依赖于依赖项 POM 中的 <license>,使用众所周知的 许可证名称或 URL。不幸的是,这些都不是标准化的(如示例 "licenses.xml" 文件中所示)。就看你想办法解决这个问题了。
  • 这些插件不会尝试将许可证分类为 "commercial" 或 "non-commercial"。你必须自己解决这个问题。