Workaround is to change (def xml) to (defn xml []) and then invoke it.

Stacktrace is:

Warning: specified :main without including it in :aot.
Implicit AOT of :main will be removed in Leiningen 3.0.0.
If you only need AOT for your uberjar, consider adding :aot :all into your
:uberjar profile instead.
Compiling test-app.core
Exception in thread "main" java.lang.IllegalArgumentException: No implementation of method: :gen-event of protocol: #'clojure.data.xml/EventGeneration found for class: clojure.data.xml.Element, compiling:(core.clj:6:3)
at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3463)
at clojure.lang.Compiler$DefExpr.eval(Compiler.java:408)
at clojure.lang.Compiler.compile1(Compiler.java:7153)
at clojure.lang.Compiler.compile(Compiler.java:7219)
at clojure.lang.RT.compile(RT.java:398)
at clojure.lang.RT.load(RT.java:438)
at clojure.lang.RT.load(RT.java:411)
at clojure.core$load$fn__5018.invoke(core.clj:5530)
at clojure.core$load.doInvoke(core.clj:5529)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:5336)
at clojure.core$compile$fn__5023.invoke(core.clj:5541)
at clojure.core$compile.invoke(core.clj:5540)
at user$eval9.invoke(form-init6653146504522592512.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:6619)
at clojure.lang.Compiler.eval(Compiler.java:6609)
at clojure.lang.Compiler.load(Compiler.java:7064)
at clojure.lang.Compiler.loadFile(Compiler.java:7020)
at clojure.main$load_script.invoke(main.clj:294)
at clojure.main$init_opt.invoke(main.clj:299)
at clojure.main$initialize.invoke(main.clj:327)
at clojure.main$null_opt.invoke(main.clj:362)
at clojure.main$main.doInvoke(main.clj:440)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:419)
at clojure.lang.AFn.applyToHelper(AFn.java:163)
at clojure.lang.Var.applyTo(Var.java:532)
at clojure.main.main(main.java:37)
Caused by: java.lang.IllegalArgumentException: No implementation of method: :gen-event of protocol: #'clojure.data.xml/EventGeneration found for class: clojure.data.xml.Element
at clojure.core$_cache_protocol_fn.invoke(core_deftype.clj:541)
at clojure.data.xml$fn__136$G__131__141.invoke(xml.clj:73)
at clojure.data.xml$flatten_elements$fn__189.invoke(xml.clj:129)
at clojure.lang.LazySeq.sval(LazySeq.java:42)
at clojure.lang.LazySeq.seq(LazySeq.java:60)
at clojure.lang.RT.seq(RT.java:484)
at clojure.core$seq.invoke(core.clj:133)
at clojure.data.xml$emit.doInvoke(xml.clj:366)
at clojure.lang.RestFn.invoke(RestFn.java:425)
at clojure.data.xml$emit_str.invoke(xml.clj:375)
at clojure.lang.AFn.applyToHelper(AFn.java:161)
at clojure.lang.AFn.applyTo(AFn.java:151)
at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3458)
... 27 more
Compilation failed: Subprocess failed

I think this is a broader issue with AOT. I'm thinking it's probably related to this: http://dev.clojure.org/jira/browse/CLJ-979. I've seen this in other code, but it's the first time I've seen it reported for data.xml. Wrapping it in a function is a good idea. I think avoiding AOT would also fix your issue.