更新: Grails 1.3.6以降、Gantスクリプトから完全なドメインにアクセスできます。Grails 1.3.6リリースノートから:
これで、run-scriptコマンドを使用して、コマンドラインから1つ以上のGroovyスクリプトを実行できます。
grails run-script [path-to-script-1] [path-to-script-2] ... [path-to-script-n]
これは、スクリプトの開始時にクラスパスで使用できないためにアプリケーションクラスに簡単にアクセスできないGantスクリプトの問題を回避します。
こんにちは、みんな、
私は(実際のプロジェクトで)Grailsを使用するのは初めてで、ファイルを読み取ってデータベースにデータを入力する1回限りのスクリプトを実行する必要があります。
grailsアプリのコンテキストでスクリプトを実行したかったので、create-scriptコマンドを使用しました。私は今、それが「ガント」スクリプトになることを理解しています。そうする理由は、すべてのgrailsドメインの良さに簡単にアクセスできるので、次のようなことが簡単にできると思ったからです。
Car car = new Car(model: 'bar', brand: 'Ford')
car.save()
ここで、Carは私のドメインクラスの1つであり、ファイルから取得した文字列「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
java.lang.NoClassDefFoundError: com.foo.Car
驚いたことに、コマンドを使用してスクリプトを実行すると、groovyが表示されますgrails LoadCars
私は間違ったアプローチを取っていますか、それとも私が間違っているより単純な何かがありますか?
どんな助けでも大歓迎です