Cambie el alcance a compile
:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.17</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Lo cual, dado que es el alcance predeterminado, corresponde a dejar de lado la definición del alcance, lo mismo cuenta para el tipo:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.17</version>
</dependency>
Echa un vistazo a esto:https://maven.apache .org/guides/introduction/introduction-to-dependency-mechanism.html para obtener información detallada sobre el alcance.
Aquí hay una información rápida para su fondo:
Ha especificado que el controlador JDBC tenga un alcance runtime
. De todos modos, la mayoría de los IDE ignorarán los ámbitos y agregarán todas sus dependencias a su classpath (por ejemplo, el classpath utilizado cuando ejecuta algo fuera de eclipse. Por el alcance runtime
le está diciendo a maven que no debe empaquetar esa dependencia en su contenedor final ya que el entorno de ejecución "proporcionará esa dependencia en runtime
. P.ej. tendría que agregarlo manualmente al classpath al llamar a su jar o cambiar el alcance a compile
lo que conducirá a que el contenedor del controlador se empaquete dentro de su contenedor y esté disponible en tiempo de ejecución.