Warum verbirgt eine Abhängigkeit mit dem Bereich "zur Verfügung gestellt" transitive Abhängigkeiten in Maven?

Ich habe drei Module in meinem Maven-Projekt (dies ist etwas vereinfacht):

Modell- Enthält JPA-annotierte EntitätsklassenBeharrlichkeit instanziiert eineEntityManager und ruft Methoden aufAnwendung Erstellt Instanzen der Klassen inModell-, setzt einige Werte und übergibt sie anBeharrlichkeit

Modell- undBeharrlichkeit hängt natürlich davon abjavax.persistence, aberAnwendung sollte nicht, denke ich.

Dasjavax.persistence Die Abhängigkeit wird auf einen POM der obersten Ebene verschobendependencyManagement Abschnitt, weil er in einer Reihe von Submodulen vorkommt, in denen ich nur auf diesen Eintrag verweise.

Was mich überrascht ist, dass ich auf die Abhängigkeit in Bezug nehmen mussapplication wenn ich den Geltungsbereich aufprovided, während ich nicht muss, wenn der Anwendungsbereich istcompile.

Mit einem Umfang vonprovided, wenn ich es nicht in der Liste aufführedependencies zumAnwendungschlägt der Build mit einer Fehlermeldung von javac fehl:

com.sun.tools.javac.code.Symbol $ CompletionFailure: Klassendatei für javax.persistence.InheritanceType nicht gefunden

Was ist los?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage