Hi,

Since there were some IRC posts regarding "realclean" when dependencies change, 
I thought about replacing ant with something else.
It's not just because of that particular realclean but also on dependencies 
that don't get actually updated or even out-of-date IDE project files 
(.classpath) causing problems.

This "something better" should have proper dependency management, doesn't 
require us to have dependency jars in git and be supported my major IDEs (IDEA 
/ Eclipse). (Someone using Eclipse?).
But such a change should not result in a folder or code refactoring game...

Maven could be an option - but it has some drawbacks regarding the current 
folder structure.
Maven can basically only emit one artifact per pom properly (plus some other 
files like -javadoc.jar or -sources.jar).
So it might be required to change the folder structure (don't want that - 
merging would become a nightmare, if possible at all...).

Grade would be a nice option.
It is more a scripting language than a "static" construct like Maven's pom.xml.
It is very flexible and seems to have all required features.
Gradle has native support for Maven repositories.
Gradle does not require the user to install Gradle (you can, but do not need 
to) - it comes with a small "wrapper" that fetches a Gradle binary.

I've identified these "non-standard" blocks in build.xml:
gen-cli-grammar: basically just a conditional exec
gen-cql3-grammar: basically just a conditional exec
generate-cql-html: basically just an exec
write-java-license-headers / rat: basically just an exec
emitting multiple jars (cassandra.jar, cassandra-thrift.jar, 
cassandra-clientutil.jar) from the same folder (build/classes/main+thrift): 
difficult with Maven
gen-thrift-py: basically just an exec
several test targets: is possible with Maven, but let's the pom.xml "explode" 
and is not easy to read
By using Gradle I hope to
get rid of dependency problems
"realclean"
dependency differences between build.xml and IDE since .project/.classpath not 
updated
.project/.classpath cannot be generated because compilation fails due to 
dependency changes
make the build file smaller
remove binaries (dependencies) from git
proper IDE support for IDEA + Eclipse?

If Gradle works, it could be introduced like that:
Keep both build.xml and Gradle build file up to date
After a while change build.xml to act basically just as a "wrapper" for Gradle. 
Just to not "disturb" existing processes (Jenkins/CI) and give users a chance 
to recognize the change.
Remove build.xml after some time

Would be great to get some feedback what you think about this.

Robert

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to