0

在使用一些 API 规范时,尤其是使用 Java EE/Jakarta EE API,例如 JPA,直到 Java SE 8,库添加具有范围的依赖项是 Maven 最佳实践provided

    <dependency>
        <groupId>jakarta.persistence</groupId>
        <artifactId>jakarta.persistence-api</artifactId>
        <scope>provided</scope>
    </dependency>

一方面,这会导致更小的 WAR-/EAR-文件,因为应用程序服务器已经提供了 API 类。

但在其他用例中,例如 Spring Boot 应用程序,这是最佳实践,因为 API 类在各种 JAR 中可用(例如也在 javaee-api 中)并且通常取决于实现提供者。

当我们将 requries 语句添加到模块信息时,例如:

requires java.persistence;

这将需要一个特定的模块,而不是一个包(与Import-PackageOSGi 不同)。并且不应该由多个模块提供同一个包,AFAIK(没有拆分包)。

那么providedMaven的范围还有用吗?我们应该如何处理这些情况?

好的,我来宾它仍然可以用于减少 WAR-/EAR-文件的大小,但前提是应用程序服务器包含完全相同的模块。

我想在模块化世界中,将来只有一个 API 类模块,对吗(这可能不是一件坏事)?

java-ee/jakarta-ee 模块将使用requries transitive语句而不是包含类本身?

4

0 回答 0