I was wondering how other people package and manage any custom walkers they write? I wrote my first walker last week, and am now trying to figure out the best way to make it available to my team and keep it up to date with new versions of GATK. I do my development on a laptop and analysis on a cluster, so I have to sync the code somehow. I can think of two possibilities, it's unclear to me which is best:
Package a Monolithic jar
Pros: Makes distribution very easy, guarantees that there are never version compatibilities
Cons: Well, I haven't been able to do it yet. I can't quite figure out how to supply a package .xml file that will import my classes into GenomeAnalysisTK.jar (or Queue.jar, for that matter). Also, I think the version number will change when I customize it, and customers/collaborators may get confused about a non-standard version number (if they notice)
Create a "Custom Walker" jar
Pros: I know how to do it. It won't change the GATK version, so the log files won't look different
Cons: I'll have to remember to include my jar on the classpath (or set an environment variable, I suppose). It's possible to encounter version incompatibilities, for instance if I want to test 3.0 but use 2.8 for production
Now that I think it through, maybe the cons of the custom jar aren't as bad as I thought. Does anyone else have any experience with Custom Walker maintenance/deployment? How did you do it?