Java 9 compatibility
What are the plans for making Grain compatible with Java 9? If it's going to be left as a java-8-only tool, that's certainly one option, but I'd prefer to know now if that's the case.
As far as the actual technical problems go, at the very least SiteLauncher#run() and AppModule#provideGroovyScriptEngine() both (try to) manipulate the classloader reflectively to add more classpath entries.
For SiteLauncher at least, it's not clear to me why this classpath manipulation is necessary. What is the point of gendeps gradle task, grainw and SiteLauncher? If we just let gradle handle dependencies without the intervening layers, there would be no need for such classpath changes at runtime. In other words, why not just use gradle tasks like https://github.com/sysgears/grain-theme-octopress/blob/master/build.gradle#L93 for everything and get rid of SiteLauncher and grainw?
@marshallpierce Yes, Java 9 support is planned, but we don't have ETA when we will be able to actively work on it. At the moment, we are swamped with other stuff. So, if you would like to submit PR I would be glad to accept it. The point in grainw is to launch Grain faster then it happens via gradle. But it brings so much confusion, that I think we should drop that grainw and SiteLauncher stuff and leave only gradlew tasks as you propose