groovy脚本类路径 [英] groovy script classpath
问题描述
我在Groovy中编写脚本,我希望有人能够通过运行 ./ myscript.groovy
来执行脚本。然而,这个脚本需要第三方库(MySQL JDBC),我不知道有什么方法可以通过 -classpath
或 -cp
参数,例如
I'm writing a script in Groovy and I would like someone to be able to execute it simply by running ./myscript.groovy
. However, this script requires a 3rd party library (MySQL JDBC), and I don't know of any way to provide this to the script other than via a -classpath
or -cp
argument, e.g.
`./monitor-vouchers.groovy -cp /path/to/mysql-lib.jar`
由于我不会在这里介绍,实际上不可能使用-classpath将JAR位置提供给脚本/ -cp参数。有什么方法可以从脚本内部加载JAR?我尝试使用 @Grab
For reasons I won't go into here, it's not actually possible to provide the JAR location to the script using the -classpath/-cp argument. Is there some way that I can load the JAR from within the script itself? I tried using @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
但是这会导致以下错误:
But this causes the following error:
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)
有没有一种方法可以使用 ./ monito来执行这个脚本r-vouchers.groovy
Is there a way I can execute this script using just ./monitor-vouchers.groovy
推荐答案
您应该可以这样做:
import groovy.sql.Sql
@GrabConfig(systemClassLoader=true)
@Grab('mysql:mysql-connector-java: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 = 'bigsecret'
def driverClass = "com.mysql.jdbc.Driver"
return Sql.newInstance(dbUrl, dbUser, dbPassword, driverClass)
}
getConnection().class
这篇关于groovy脚本类路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!