Java 11 module-info и зависимости Maven с предоставленной областью действия - PullRequest
0 голосов
/ 10 января 2020

При работе с некоторыми спецификациями 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) и часто зависят от поставщика реализации.

Когда мы добавляем оператор заявок в информацию о модуле, например как:

requires java.persistence;

для этого потребуется указанный c модуль, а не пакет (в отличие от Import-Package OSGi). И один и тот же пакет не должен предоставляться более чем одним модулем, AFAIK (без разделенных пакетов).

Так полезна ли область применения Maven provided? Как нам справиться с этими случаями?

Хорошо, я могу использовать его для уменьшения размера WAR- / EAR-файлов, но только если серверы приложений содержат точно такой же модуль.

Полагаю, что в будущем в модульном мире будет только один модуль для классов API, верно (что может быть неплохо)?

И java -ee / jakarta-ee модули будет работать с requries transitive утверждениями, а не включать сами классы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...