Cambia l'ambito in compile
:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.17</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Che, poiché è l'ambito predefinito, corrisponde all'assenza della definizione dell'ambito, lo stesso vale per il tipo:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.17</version>
</dependency>
Dai un'occhiata a questo:https://maven.apache .org/guides/introduction/introduction-to-dependency-mechanism.html per informazioni dettagliate sullo scopo.
Ecco una rapida informazione per il tuo background:
Hai specificato che il driver JDBC ha un ambito runtime
. La maggior parte degli IDE ignorerà comunque gli ambiti e aggiungerà tutte le tue dipendenze alle loro classpath (ad esempio il classpath utilizzato quando si esegue qualcosa al di fuori di eclipse. Dall'ambito runtime
stai dicendo a Maven che non deve comprimere quella dipendenza nel tuo jar finale poiché l'ambiente di esecuzione "fornirà quella dipendenza in runtime
. Per esempio. dovresti aggiungerlo manualmente al percorso di classe quando chiami il tuo jar o cambiare l'ambito in compile
che porterà il driver-jar ad essere impacchettato all'interno del tuo jar e disponibile in fase di esecuzione.