В Groovy подключить дополнительные Java-библиотеки и классы можно 3-мя способами:
- Дописыванием пути к jar-у или директории с классами в глобальную переменную CLASSPATH
- Указанием значение параметра -classpath (он же -cp) при запуске groovy, groovysh, и тд.
- Размещением необходимых jar-ов в директории ~/.groovy/lib
При разработке небольшой утилиты парсинга и анализа лог-файлов мне необходимо было выбирать нужный jar-файл в зависимости от некоторых условий.
Потому ни один из приведенных способов мне не подошел.
К тому же мне необходимо было искать jar-файлы в директории, в которой находился сам скрипт, в то время как запускаться он мог из любой директории.
Вспомнив про черновик заметки о ClassLoader-ах, которую Юра все никак не соберется дописать и опубликовать, получилось что-то вроде:
Простой прием, демонстрирующий определение местополжения класса и загрузку дополнительных JAR-ов
def f = new File(codebase as String)
def url = new URL(f.getParent()+"/commons-lang-2.3.jar")
this.getClass().getClassLoader().getRootLoader().addURL(url)
Class au = Class.forName("org.apache.commons.lang.StringUtils")
assert au.isEmpty(null) && au.isEmpty("")
P.S. Кстати запускать groovy-скрипт в UNIX-среде можно точно так же, как и sh, perl, php, python скрипты - указанием в первой строке:
#!/usr/bin/env groovy