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

hce*_*hce 1 java open-source maven

我们公司有很多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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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

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

Ste*_*n C 5

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

  • “ayoy-license-verifier-maven-plugin”(参考
  • “khmarbaise/Maven-License-Verifier-Plugin”(参考

然而,这种方法存在一些问题:

  • 某些 Maven 工件未在其 POM 文件中声明许可证。
  • 这些插件依赖于<license>依赖项的 POM,使用众所周知的许可证名称或 URL。不幸的是,这些都没有标准化(如示例“licenses.xml”文件中所示)。由你来想办法解决这个问题。
  • 这些插件不会尝试将许可证分类为“商业”或“非商业”。你必须自己解决这个问题。

  • 您可以通过 https://www.mojohaus.org/license-maven-plugin/download-licenses-mojo.html 获取已使用许可证的列表 (2认同)