【发布时间】:2021-05-20 10:11:54
【问题描述】:
我对 Groovy 很陌生,我想从主 groovy 脚本中的另一个 groovy 脚本导入一个类。我已经看到了这个post。但是由于环境限制,我不能使用 GroovyClassLoader 之类的函数,也不能导入任何库/框架。我唯一的可能是使用评估方法。
我试过了:
主脚本(评估不会抛出任何错误)
File csvFile = new File("./Csvreader.groovy");
evaluate(csvFile);
Csvreader 脚本
class CSVReader{
def csvFile = new File('./test.csv');
def separatorChar = ";"
def values = [];
def headers = [];
void setSeperator(String s){
if(s != ""){
separatorChar = s;
}
}
void readCsv(){
csvFile.eachLine{ line, number ->
if(number == 1){
def head = line.split(separatorChar);
for (entry in head) {
headers.add(entry);
}
} else{
def value = line.split(separatorChar);
def map =[:];
def i = 0;
for (entry in value) {
map.put(headers[i], entry);
i++;
}
values.add(map);
}
}
}
def getValues(){
return values;
}
def getHeaders(){
return headers;
}
def getSize(){
return values.size();
}
def getLine(def keyParam, def value){
for(int i = 0; i < values.size(); i++){
def line = values[i];
if(values[i][keyParam] == value){
return values[i];
}
}
}
}
但是,我需要在评估调用中传递参数(并且我会将方法移到类之外),或者我需要创建类的实例。 不幸的是,我真的不知道我该怎么做,有人有解决方案吗?
【问题讨论】:
-
为什么不能使用类加载器?你在詹金斯管道中吗?
-
不完全是,但我使用的产品受到限制,并非所有 Groovy 方法都被允许
-
好的。 groovy 中没有
evaluate这样的方法。好像是你的产品提供的,你得看一下这个产品的说明书…… -
你确定吗?原因在链接的post 中,最佳答案是评估
-
好的。我明白了 - 你的意思是 Script.evaluate 方法 docs.groovy-lang.org/latest/html/api/groovy/lang/…
标签: groovy