¿Por qué una dependencia con alcance “provisto” oculta las dependencias transitivas en Maven?
Tengo tres módulos en mi proyecto de Maven (esto está un poco simplificado):
modelo contiene clases de entidad anotada JPApersistencia crea una instancia deEntityManager y llama a los metodos en ellosolicitud crea instancias de las clases enmodelo, establece algunos valores y los pasa apersistenciamodelo ypersistencia obviamente depende dejavax.persistence
, perosolicitud No debería, creo.
losjavax.persistence
la dependencia se traslada a un POM de nivel superiordependencyManagement
Sección porque se produce en una serie de submódulos en los que solo hago referencia a esa entrada.
Lo que me sorprende es que tengo que hacer referencia a la dependencia enapplication
cuando establezco su alcance aprovided
, mientras que no tengo que hacerlo cuando su alcance escompile
.
Con un alcance deprovided
, si no lo enumero en eldependencies
parasolicitud, la compilación falla con un mensaje de error de javac:
com.sun.tools.javac.code.Symbol $ CompletionFailure: archivo de clase para javax.persistence.InheritanceType no encontrado
¿Que esta pasando?