I recently worked on a project in Grails 3.x that required migrating legacy data from a local .csv file during Bootstrap. I needed the data from this file to populate my Domains the very first time the application was run.
I was confused about two things:
- Where do I put the file?
- How do I retrieve the file from inside
Bootstrap.groovy?
After searching the inter-webs, I finally found a solution that worked for me. I ended up creating a sub-directory in grails-app/conf called /data. All of the files in this data directory would automatically be placed into the classpath and could be accessed from inside Bootstrap.groovy like so:
InputStream myData = this.class.classLoader.getResourceAsStream('/data/<FILENAME>.csv');
… And that’s all there is to it! I’m sure there are many other solutions to this problem, but since my data file was a primarily a configuration artifact, it made sense to me to include it in the conf directory.