File1.groovy
def method() {
println "test"
}
File2.groovy
method()
Je veux charger/inclure les fonctions/méthodes de File1.groovy pendant l'exécution, égal à la charge de rubys/rake. Ils sont dans deux répertoires différents.
File1.groovy
def method() {
println "test"
}
File2.groovy
method()
Je veux charger/inclure les fonctions/méthodes de File1.groovy pendant l'exécution, égal à la charge de rubys/rake. Ils sont dans deux répertoires différents.
Si cela ne vous dérange pas que le code dans le fichier 2 se trouve dans un bloc with
, vous pouvez faire :
new GroovyShell().parse( new File( 'file1.groovy' ) ).with {
method()
}
Une autre méthode possible serait de changer file1.groovy
en :
class File1 {
def method() {
println "test"
}
}
Et puis dans file2.groovy
vous pouvez utiliser mixin
pour ajouter les méthodes de file1
def script = new GroovyScriptEngine( '.' ).with {
loadScriptByName( 'file1.groovy' )
}
this.metaClass.mixin script
method()
Vous pouvez évaluer n'importe quelle expression ou script dans Groovy en utilisant GroovyShell.
File2.groovy
GroovyShell shell = new GroovyShell()
def script = shell.parse(new File('/path/file1.groovy'))
script.method()
Je suis en retard à ce sujet, mais. C'est ainsi que nous avons réalisé ce que vous demandiez. Donc, j'ai un fichier1.gsh comme ça :
Fichier1 :
println("this is a test script")
def Sometask(param1, param2, param3)
{
retry(3){
try{
///some code that uses the param
}
catch (error){
println("Exception throw, will retry...")
sleep 30
errorHandler.call(error)
}
}
}
return this;
Et dans l'autre fichier, on peut accéder à ces fonctions en instanciant d'abord. Donc dans le fichier 2.
Fichier2 :
def somename
somename = load 'path/to/file1.groovy'
//the you can call the function in file1 as
somename.Sometask(param1, param2, param3)
Voilà ce que j'utilise.
1 : Écrivez any_path_to_the_script.groovy
en classe
2 : Dans le script d'appel, utilisez :
def myClass = this.class.classLoader.parseClass(new File("any_path_to_the_script.groovy"))
myClass.staticMethod()
Il fonctionne dans la console de script Jenkins Groovy. Je n'ai pas essayé les méthodes non statiques.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.