审核Spring Boot项目中使用的库的许可证

时间:2017-12-15 13:51:39

标签: java spring maven

我的任务是审核我们发布的项目中使用的许可证,这是一个Spring Boot多模块Maven应用程序。

项目的结构是父pom.xml声明Spring引导BOM:

<dependencyManagement>
   <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring-boot.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
   </dependencies>
</dependencyManagement>

然后在其中一个子模块(我们有4个),即实际的Web应用程序中,我们已经将spring-boot-maven-plugin配置为repackage任务 - 这将创建一个大约31兆字节的可执行JAR

在这样的Spring启动项目上运行mvn site,然后打开target/site/index.html并单击“依赖关系管理”,我们可以看到Spring Boot提供的非常大的依赖关系列表。现在,我很确定我们只使用这个列表的一位数(如9或10个库),我可以在spring-boot-maven-plugin documentation上读到这只涉及“提供”范围,如Spring应该被视为一个应用程序容器。

另一方面,我正在使用mvn dependency:analyzemvn dependency:tree目标来检查有效使用的内容,包括传递依赖项。大多数这些东西都没有在pom.xml文件中声明,如上所述,我们有一个父pom使用Spring-boot中的BOM,然后在单个模块中我们根据需要激活依赖项。

我的问题:

1)在法律方面,我可以假设mvn site为Spring Boot显示的所有内容都不是编译时使用的实际依赖列表吗?是否可以强制退出JAR我们没有使用的任何东西?我尝试使用排除列表配置spring-boot-manven-plugin,但JAR大小没有改变。

2)如何以编程方式编译依赖项列表和附加的许可证?我觉得mvn dependency:analyze是正确的路径,但有没有办法轮询列出的任何模块使用的许可证?

0 个答案:

没有答案