Scrivo una sceneggiatura in Groovy e vorrei che qualcuno fosse in grado di eseguirlo semplicemente eseguendo ./myscript.groovy
. Tuttavia, questo script richiede una libreria di terze parti (MySQL JDBC) e non conosco alcun modo per fornire questo allo script se non tramite un argomento -classpath
o -cp
, ad es.classpath di script groovy
`./monitor-vouchers.groovy -cp /path/to/mysql-lib.jar`
Per ragioni che non voglio in questa sede, in realtà non è possibile fornire la posizione JAR allo script utilizzando il -classpath/argomento -cp. C'è un modo in cui posso caricare il JAR all'interno dello script stesso? Ho provato ad utilizzare @Grab
import groovy.sql.Sql
@Grab(group='mysql', module='mysql-connector-java', version='5.1.19')
def getConnection() {
def dbUrl = 'jdbc:mysql://database1.c5vveqm7rqgx.eu-west-1.rds.amazonaws.com:3306/vouchers_prod'
def dbUser = 'pucaroot'
def dbPassword = 'password'
def driverClass = "com.mysql.jdbc.Driver"
return Sql.newInstance(dbUrl, dbUser, dbPassword, driverClass)
}
getConnection().class
Ma questo causa il seguente errore:
Caught: java.sql.SQLException: No suitable driver
java.sql.SQLException: No suitable driver
at monitor-vouchers.getConnection(monitor-vouchers.groovy:13)
at monitor-vouchers.run(monitor-vouchers.groovy:17)
C'è un modo per eseguire questo script utilizza solo ./monitor-vouchers.groovy
Se mai voglia di vedere ciò che è nel vostro percorso di classe, eseguire questo 'this.class.classLoader.rootLoader.URLs.each { println it} '- per me, sembra che ~/.groovy/lib non sia lì. – MarkHu