одноразовый скрипт grails для заполнения базы данных

. Обновление: , начиная с Grails 1.3.6, можно получить доступ ко всему домену из Скрипты Ганта. Из заметок о выпуске Grails 1.3.6 :

Теперь вы можете запускать один или несколько скриптов Groovy из командной строки с помощью команды run-script, например

grails run-script [path-to- script-1] [path-to-script-2] ... [path-to-script-n]

Это позволяет обойти проблему в сценариях Gant, когда вы не можете получить удобный доступ к классам приложений, поскольку они не доступный в пути к классам при запуске скриптов.


Привет всем,

Я новичок в использовании 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

Я беру неправильный подход, или есть что-то более простое, что я делаю неправильно?

Любая помощь приветствуется

5
задан Hans Westerbeek 18 December 2010 в 14:09
поделиться