Как выполнить groovy скрипт из bat файла?
У меня в отдельном файле проекта есть groovy скрипт, выполняющий определённые действия. Я хочу запускать этот скрипт с помощью bat файла. С помощью какой команды и как это сделать?
Как советовали, пробовал groovy script.groovy, но непонятно почему выдаётся следующая ошибка:
C:\Users\User>cd IdeaProjects\Task\src\main\java
C:\Users\User\IdeaProjects\Task\src\main\java>groovy task.groovy
Caught: java.lang.ClassNotFoundException: org.postgresql.Driver
java.lang.ClassNotFoundException: org.postgresql.Driver
at task.run(task.groovy:9)
Да, в моём скрипте есть подключение к бд с помощью org.postgresql.Driver:
sql = Sql.newInstance("jdbc:postgresql://" + addrDB + nameDB, userDB, passDB, "org.postgresql.Driver")
Но почему скрипт запускается и нормально работает из IDE (с точно такой же строчкой), но не запускается из командной строки?
Ответы (2 шт):
Если groovy есть в PATH, просто
groovy script.groovy
кладете эту строку в новый текстовый файл, сохраняете его с расширением .bat и запускаете в той же папке, где скрипт лежит. Иначе
"путь к groovy\groovy.exe" "путь к скрипту\script.groovy"
Если у вас используются русские имена в пути, не забудьте в начале bat-файла написать
chcp 1251
смена кодировки.
Для нормальной работы батника, чтобы подключиться к бд с помощью org.postgresql.Driver мне помогли следующие строчки:
@GrabConfig(systemClassLoader=true)
@Grab(group='org.postgresql', module='postgresql', version='9.4-1205-jdbc42')
sql = Sql.newInstance("jdbc:postgresql://" + addrDB + nameDB, userDB, passDB, "org.postgresql.Driver")
После этого скрипт начинает корректно работать, если вызывать его из bat файла, однако перестаёт корректно работать из IDE, выдавая следующее:
Groovyc: While compiling Task: Cannot @Grab without Ivy, please add it to your module dependencies (NoClassDefFoundError: org/apache/ivy/core/report/ResolveReport)
Решить это мне помог @Danny, указав как добавить ivy в pom.xml:
<dependency> <!-- support @Grab in Groovy scripts -->
<groupId>org.apache.ivy</groupId>
<artifactId>ivy</artifactId>
<version>2.5.0</version>
</dependency>
После этого всё хорошо запускается и из батника, и из IDE!