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