Обновление: с Grails 1.3.6 каждый имеет доступ к полному домену из скриптов Gant.
Из Грааля 1.3.6 примечания к выпуску :
Теперь вы можете запускать один или несколько скриптов Groovy из командной строки с помощью команды run-script, например,
grails run-script [путь-к-сценарию-1] [путь-к-сценарию-2] ... [путь-к-сценарию-n]
Это решает проблему в сценариях Ганта, когда вы не можете получить удобный доступ к классам приложений, поскольку они не доступны в пути к классам при запуске сценариев.
Привет всем,
Я новичок в использовании Grails (в реальном проекте), и у меня есть одноразовый скрипт, который мне нужно выполнить, который читает файл и затем заполняет мою базу данных.
Я хотел, чтобы скрипт запускался в контексте моего приложения grails, поэтому я использовал команду create-script. Теперь я понимаю, что это делает сценарий «Ганта». Причиной для этого было то, что я думал, что это позволит мне легко получить доступ ко всем добротам домена grails, так что я смогу легко сделать что-то подобное:
Car car = new Car(model: 'bar', brand: 'Ford')
car.save()
Здесь Car - это один из классов моего домена, а строки 'bar' и 'Ford', которые я получил из моего файла.
Начало моего скрипта выглядит так:
import com.foo.Car
grailsHome = Ant.project.properties."environment.GRAILS_HOME"
includeTargets << new File ( "${grailsHome}/scripts/Bootstrap.groovy" )
target(main: "a script for storing cars") {
depends(bootstrap, classpath) // code dealing with the file with cars follows
Удивительно, но Groovy дает мне java.lang.NoClassDefFoundError: com.foo.Car
, когда я выполняю сценарий с командой grails LoadCars
Я ошибаюсь или есть что-то более простое, что я делаю неправильно?
Любая помощь приветствуется