Hi all,
I have previously been using an ant-build script for compiling of my mod. It used a technique that I learned from Buildcraft to replace the version number in the mod source (in the .java files) with the version number provided to the build system (through a properties file, command line, etc). It would replace any version tokens found in the source with the intended version number from the build environment. This simplified several things, as I only had to update my version number in a single place to have it propagate/replaced across to the various Mod classes/config classes as well as the mcmod.info file.
Has anyone found a similar solution using Gradle?
The default-shipped build.gradle file includes the code for updating the mcmod.info file (I've even got it loading the version number from an external properties file as it was for ant), but I can't seem to find a way to adapt the same code to work on source-files? (the processResources task is apparently called _after_ compilation, so at that step it is too late to find/replace tokens)
All of the google research that I was able to do suggested two things A: That you shouldn't dynamically replace strings in source, but should instead load the strings into the program from a properties file at runtime -- unfortunately this cannot be done for the Mod version number, as it is declared as a final field -- it HAS to exist at compile-time, it cannot be delayed until runtime. So either I manually update version number across multiple files, or continue doing it with a build script in one fashion or another.
The other suggestion B: Was to use an ant.task from within gradle to accomplish the same thing. Okay..great..pretty sure I could figure out how to get that working -- but where precisely to put that new task, and how to link it into the existing build file? (I'm thinking I should be able to declare a new task, and tell gradle that the compileJava task depends on the new one, but I'm a bit lost on...well..the entire gradle environment/language, and all the documentation I can find is so far abstracted from what I am trying to accomplish that I cannot draw any parallels to learn from).
Anyone have experience with this stuff in gradle / figured out how to duplicate this simple functionality in gradle?