有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

在我们公司,有许多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>

样品。ProjectA。Project-A可能有一些商业依赖性。 我看到maven使用licenses字段来放置许可证信息

  <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>

我还找到了一种通过reports info插件maven-project-info-reports-plugin获得maven许可证的方法

现在,如果有商业许可证,告诉maven发出警告,那就太好了。有可能吗


共 (1) 个答案

  1. # 1 楼答案

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

    • “ayoy许可证验证程序maven插件”(reference
    • “khmarbaise/Maven许可证验证插件”(reference

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

    • 一些Maven工件不在POM文件中声明许可证
    • 这些插件依赖于依赖项的POM中的^{,使用众所周知的名称或许可证的URL。不幸的是,这些都没有标准化(如“licenses.xml”文件示例所示)。这取决于你想出一个解决办法
    • 这些插件并不试图将许可证归类为“商业”或“非商业”。你必须自己解决这个问题