groovy脚本类路径
我正在用Groovy编写一个脚本,我希望有人能够通过运行groovy脚本类路径,groovy,classpath,Groovy,Classpath,我正在用Groovy编写一个脚本,我希望有人能够通过运行/myscript.Groovy来执行它。但是,这个脚本需要一个第三方库(MySQL JDBC),我不知道除了通过-classpath或-cp参数之外,还有什么方法可以为脚本提供这个库,例如 `./monitor-vouchers.groovy -cp /path/to/mysql-lib.jar` 出于我不在这里讨论的原因,实际上不可能使用-classpath/-cp参数为脚本提供JAR位置。是否有某种方法可以从脚本本身中加载JAR?我
/myscript.Groovy
来执行它。但是,这个脚本需要一个第三方库(MySQL JDBC),我不知道除了通过-classpath
或-cp
参数之外,还有什么方法可以为脚本提供这个库,例如
`./monitor-vouchers.groovy -cp /path/to/mysql-lib.jar`
出于我不在这里讨论的原因,实际上不可能使用-classpath/-cp参数为脚本提供JAR位置。是否有某种方法可以从脚本本身中加载JAR?我试过使用@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
但这会导致以下错误:
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)
是否有一种方法可以仅使用
/monitor凭单执行此脚本。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
还有两个选择:
如果您想查看类路径中的内容,请运行此
this.class.classLoader.rootLoader.url。每个{println it}
——对我来说,似乎~/.groovy/lib不在其中。如果它是静态类或上下文(例如脚本的主方法),则应该使用类名来代替this