Using the latest version of google closure with clojurescript? - leiningen

How would I get clojurescript and lein-cljsbuild to use the newest version of the google closure instead of last year's version? I would like to use the new features such as the websockets abstraction layer.
I have tried making a jar of the latest copy and installing that using lein-localrepo, but it doesn't seem to have any affect.
Any suggestions?

You can use a different version of the Google Closure compiler simply by excluding its dependency from Clojurescript in your project.clj and adding another version. Here is an alternate version of the example project that comes with lein cljs-build using the latest version of Clojurscript and the Google Closure compiler.
(defproject cljsbuild-example-simple "0.3.4"
:description "A simple example of how to use lein-cljsbuild"
:source-paths ["src-clj"]
:dependencies [[org.clojure/clojure "1.5.1"]
[com.google.javascript/closure-compiler "v20131014"]
[org.clojure/clojurescript "0.0-1934"
:exclusions [org.apache.ant/ant
com.google.javascript/closure-compiler]]
[compojure "1.0.4"]
[hiccup "1.0.0"]]
:plugins [[lein-cljsbuild "0.3.4"]
[lein-ring "0.7.0"]]
:cljsbuild {
:builds [{:source-paths ["src-cljs"]
:compiler {:output-to "resources/public/js/main.js"
:optimizations :whitespace
:pretty-print true}}]}
:ring {:handler example.routes/app})
Which results in this dependency tree:
[clojure-complete "0.2.3" :exclusions [[org.clojure/clojure]]]
[com.google.javascript/closure-compiler "v20131014"]
[args4j "2.0.16"]
[com.google.code.findbugs/jsr305 "1.3.9"]
[com.google.guava/guava "15.0"]
[com.google.protobuf/protobuf-java "2.4.1"]
[org.json/json "20090211"]
[compojure "1.0.4"]
[clout "1.0.1"]
[org.clojure/core.incubator "0.1.0"]
[org.clojure/tools.macro "0.1.0"]
[ring/ring-core "1.1.0"]
[clj-time "0.3.7"]
[joda-time "2.0"]
[commons-codec "1.6"]
[commons-fileupload "1.2.1"]
[commons-io "2.1"]
[javax.servlet/servlet-api "2.5"]
[hiccup "1.0.0"]
[org.clojure/clojure "1.5.1"]
[org.clojure/clojurescript "0.0-1934" :exclusions [[org.apache.ant/ant] [com.google.javascript/closure-compiler]]]
[org.clojure/data.json "0.2.3"]
[org.clojure/google-closure-library "0.0-20130212-95c19e7f0f5f"]
[org.clojure/google-closure-library-third-party "0.0-20130212-95c19e7f0f5f"]
[org.clojure/tools.reader "0.7.9"]
[org.mozilla/rhino "1.7R4"]
[org.clojure/tools.nrepl "0.2.3" :exclusions [[org.clojure/clojure]]]
Then compile it:
$ lein cljsbuild once
Compiling ClojureScript.
Compiling "resources/public/js/main.js" from ["src-cljs"]...
Successfully compiled "resources/public/js/main.js" in 9.181874 seconds.
Hope this helps!

Related

DOM Control with ClojureScript and Enfocus - problem with lein cjsbuild auto

Hi I'm not an experienced developer and am working my way through this great book Living Clojure: An introduction and training plan for developers by Carin Meier
I'd appreciate your help with an issue I'm stuck on in Chapter 7 (Creating Web Applications with Clojure).
It's walked me through the following sections okay:
Creating a Web Server with Compojure
Using JSON with the Cheshire Library and Ring
Using Clojure in Your Browser with ClojureScript
Browser-Connected REPL
Making HTTP Calls with ClojureScript and cljs-http
But in the section...
DOM Control with ClojureScript and Enfocus...
...I've got to the middle of page 130, ("...Save your edits, and your cljsbuild will recompile your ClojureScript...") but the lein cjsbuild auto, which detects the changes, fails on the attempted compile.
These are the various files I've set up
project.clj
(defproject cheshire-cat "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:min-lein-version "2.0.0"
:dependencies [[org.clojure/clojure "1.10.0"]
[compojure "1.6.1"]
[ring/ring-defaults "0.3.2"]
[ring/ring-json "0.5.0"]
[org.clojure/clojurescript "1.10.597"]
[cljs-http "0.1.46"]
[org.clojure/core.async "0.5.527"]
[enfocus "2.1.1"]]
:plugins [[lein-ring "0.12.5"]
[lein-cljsbuild "1.1.7"]]
:ring {:handler cheshire-cat.handler/app}
:profiles
{:dev {:dependencies [[javax.servlet/servlet-api "2.5"]
[ring/ring-mock "0.4.0"]]}}
:cljsbuild {
:builds [{
:source-paths ["src-cljs"]
:compiler {
:output-to "resources/public/main.js"
:optimizations :whitespace
:pretty-print true}}]})
src / cheshire_cat / handler.clj
(ns cheshire-cat.handler
(:require [compojure.core :refer :all]
[compojure.route :as route]
[ring.middleware.defaults :refer [wrap-defaults site-defaults]]
[ring.middleware.json :as ring-json]
[ring.util.response :as rr]))
(defroutes app-routes
(GET "/" [] "Hello World")
(GET "/cheshire-cat" []
(rr/response {:name "Cheshire Cat" :status :grinning}))
(route/not-found "Not Found"))
(def app
(-> app-routes
(ring-json/wrap-json-response)
(wrap-defaults site-defaults)))
src-cljs / core.cljs
(ns cheshire-cat.core
(:require-macros [cljs.core.async.macros :refer [go]])
(:require [clojure.browser.repl :as repl]
[cljs-http.client :as http]
[cljs.core.async :refer [<!]]
[enfocus.core :as ef]))
(defn ^:export init []
(repl/connect "http://localhost:9000/repl")
(go
(let [response (<! (http/get "/cheshire-cat"))
body (:body response)]
(ef/at "#cat-name" (ef/content (:name body)))
(ef/at "#status" (ef/content (:status body))))))
resources / public / cat.html
<!DOCTYPE html>
<html>
<head>
<title>Cheshire Cat</title>
</head>
<body>
<div id="cat-name">Name</div>
<div id="status">Status</div>
<script type="text/javascript" src="main.js"></script>
<script type="text/javascript">cheshire_cat.core.init()</script>
</body>
</html>
Terminal
On one tab, I've started a server on port 3000 using lein ring server
Another tab is watching for changes before compiling ClojureScript using lein cljsbuild auto
It's here that I'm running into trouble. I'll paste the verbose response below. I tried adding a dependency of domina into the project.clj file, but that didn't help so I removed it again.
Many thanks in advance.
Garys-MacBook-Pro:cheshire-cat garyhudson$ lein cljsbuild auto
Watching for changes before compiling ClojureScript...
Compiling ["resources/public/main.js"] from ["src-cljs"]...
WARNING: domina is a single segment namespace at line 1 file:/Users/garyhudson/.m2/repository/domina/domina/1.0.3/domina-1.0.3.jar!/domina.cljs
WARNING: Protocol DomContent is overwriting function nodes in file file:/Users/garyhudson/.m2/repository/domina/domina/1.0.3/domina-1.0.3.jar!/domina.cljs
WARNING: Protocol DomContent is overwriting function single-node in file file:/Users/garyhudson/.m2/repository/domina/domina/1.0.3/domina-1.0.3.jar!/domina.cljs
WARNING: *debug* not declared dynamic and thus is not dynamically rebindable, but its name suggests otherwise. Please either indicate ^:dynamic *debug* or change the name at line 111 file:/Users/garyhudson/.m2/repository/domina/domina/1.0.3/domina-1.0.3.jar!/domina.cljs
WARNING: Use of undeclared Var goog.dom/query at line 15 file:/Users/garyhudson/.m2/repository/domina/domina/1.0.3/domina-1.0.3.jar!/domina/css.cljs
WARNING: Use of undeclared Var goog.dom/query at line 19 file:/Users/garyhudson/.m2/repository/domina/domina/1.0.3/domina-1.0.3.jar!/domina/css.cljs
Compiling ["resources/public/main.js"] failed.
clojure.lang.ExceptionInfo: failed compiling file:target/cljsbuild-compiler-0/enfocus/core.cljs
compiler.cljc:1717 cljs.compiler$compile_file$fn__3955.invoke
compiler.cljc:1677 cljs.compiler$compile_file.invokeStatic
compiler.cljc:1653 cljs.compiler$compile_file.invoke
closure.clj:653 cljs.closure/compile-file
closure.clj:631 cljs.closure/compile-file
closure.clj:727 cljs.closure/fn
closure.clj:721 cljs.closure/fn
closure.clj:549 cljs.closure/fn[fn]
closure.clj:700 cljs.closure/compile-from-jar
closure.clj:690 cljs.closure/compile-from-jar
closure.clj:737 cljs.closure/fn
closure.clj:721 cljs.closure/fn
closure.clj:549 cljs.closure/fn[fn]
closure.clj:1088 cljs.closure/compile-sources[fn]
LazySeq.java:42 clojure.lang.LazySeq.sval
LazySeq.java:51 clojure.lang.LazySeq.seq
Cons.java:39 clojure.lang.Cons.next
RT.java:709 clojure.lang.RT.next
core.clj:64 clojure.core/next
core.clj:3142 clojure.core/dorun
core.clj:3148 clojure.core/doall
core.clj:3148 clojure.core/doall
closure.clj:1084 cljs.closure/compile-sources
closure.clj:1073 cljs.closure/compile-sources
closure.clj:3012 cljs.closure/build
closure.clj:2920 cljs.closure/build
api.clj:208 cljs.build.api/build
api.clj:189 cljs.build.api/build
api.clj:195 cljs.build.api/build
api.clj:189 cljs.build.api/build
compiler.clj:61 cljsbuild.compiler/compile-cljs[fn]
compiler.clj:60 cljsbuild.compiler/compile-cljs
compiler.clj:48 cljsbuild.compiler/compile-cljs
compiler.clj:168 cljsbuild.compiler/run-compiler
compiler.clj:129 cljsbuild.compiler/run-compiler
form-init2776313306215562422.clj:1 user/eval838[fn]
form-init2776313306215562422.clj:1 user/eval838[fn]
LazySeq.java:42 clojure.lang.LazySeq.sval
LazySeq.java:51 clojure.lang.LazySeq.seq
RT.java:531 clojure.lang.RT.seq
core.clj:137 clojure.core/seq
core.clj:3133 clojure.core/dorun
core.clj:3148 clojure.core/doall
core.clj:3148 clojure.core/doall
form-init2776313306215562422.clj:1 user/eval838
form-init2776313306215562422.clj:1 user/eval838
Compiler.java:7176 clojure.lang.Compiler.eval
Compiler.java:7166 clojure.lang.Compiler.eval
Compiler.java:7635 clojure.lang.Compiler.load
Compiler.java:7573 clojure.lang.Compiler.loadFile
main.clj:452 clojure.main/load-script
main.clj:454 clojure.main/init-opt
main.clj:454 clojure.main/init-opt
main.clj:485 clojure.main/initialize
main.clj:519 clojure.main/null-opt
main.clj:516 clojure.main/null-opt
main.clj:598 clojure.main/main
main.clj:561 clojure.main/main
RestFn.java:137 clojure.lang.RestFn.applyTo
Var.java:705 clojure.lang.Var.applyTo
main.java:37 clojure.main.main
Caused by: clojure.lang.Compiler$CompilerException: Syntax error macroexpanding clojure.core/ns at (enfocus/macros.clj:1:1).
Compiler.java:6971 clojure.lang.Compiler.checkSpecs
Compiler.java:6987 clojure.lang.Compiler.macroexpand1
Compiler.java:7074 clojure.lang.Compiler.macroexpand
Compiler.java:7160 clojure.lang.Compiler.eval
Compiler.java:7635 clojure.lang.Compiler.load
RT.java:381 clojure.lang.RT.loadResourceScript
RT.java:372 clojure.lang.RT.loadResourceScript
RT.java:463 clojure.lang.RT.load
RT.java:428 clojure.lang.RT.load
core.clj:6126 clojure.core/load[fn]
core.clj:6125 clojure.core/load
core.clj:6109 clojure.core/load
RestFn.java:408 clojure.lang.RestFn.invoke
core.clj:5908 clojure.core/load-one
core.clj:5903 clojure.core/load-one
core.clj:5948 clojure.core/load-lib[fn]
core.clj:5947 clojure.core/load-lib
core.clj:5928 clojure.core/load-lib
RestFn.java:142 clojure.lang.RestFn.applyTo
core.clj:667 clojure.core/apply
core.clj:5985 clojure.core/load-libs
core.clj:5969 clojure.core/load-libs
RestFn.java:137 clojure.lang.RestFn.applyTo
core.clj:667 clojure.core/apply
core.clj:6007 clojure.core/require
core.clj:6007 clojure.core/require
RestFn.java:408 clojure.lang.RestFn.invoke
analyzer.cljc:4106 cljs.analyzer$ns_side_effects$fn__2653.invoke
analyzer.cljc:4105 cljs.analyzer$ns_side_effects.invokeStatic
analyzer.cljc:4077 cljs.analyzer$ns_side_effects.invoke
analyzer.cljc:4201 cljs.analyzer$analyze_STAR_$fn__2706.invoke
PersistentVector.java:343 clojure.lang.PersistentVector.reduce
core.clj:6827 clojure.core/reduce
core.clj:6810 clojure.core/reduce
analyzer.cljc:4201 cljs.analyzer$analyze_STAR_.invokeStatic
analyzer.cljc:4191 cljs.analyzer$analyze_STAR_.invoke
analyzer.cljc:4220 cljs.analyzer$analyze.invokeStatic
analyzer.cljc:4203 cljs.analyzer$analyze.invoke
compiler.cljc:1535 cljs.compiler$emit_source.invokeStatic
compiler.cljc:1508 cljs.compiler$emit_source.invoke
compiler.cljc:1620 cljs.compiler$compile_file_STAR_$fn__3924.invoke
compiler.cljc:1428 cljs.compiler$with_core_cljs.invokeStatic
compiler.cljc:1417 cljs.compiler$with_core_cljs.invoke
compiler.cljc:1604 cljs.compiler$compile_file_STAR_.invokeStatic
compiler.cljc:1597 cljs.compiler$compile_file_STAR_.invoke
compiler.cljc:1702 cljs.compiler$compile_file$fn__3955.invoke
Caused by: clojure.lang.ExceptionInfo: Call to clojure.core/ns did not conform to spec.
alpha.clj:705 clojure.spec.alpha/macroexpand-check
alpha.clj:697 clojure.spec.alpha/macroexpand-check
AFn.java:156 clojure.lang.AFn.applyToHelper
AFn.java:144 clojure.lang.AFn.applyTo
Var.java:705 clojure.lang.Var.applyTo
Compiler.java:6969 clojure.lang.Compiler.checkSpecs
Here is the clue you need:
Caused by: clojure.lang.Compiler$CompilerException: Syntax error
macroexpanding clojure.core/ns at (enfocus/macros.clj:1:1).
....
Caused by: clojure.lang.ExceptionInfo: Call to clojure.core/ns did
not conform to spec.
So it is a problem in the enfocus library, not your code.
IMHO the enfocus library is a bit old these days. I think you would be better served using the figwheel.main lib for the CLJS code: https://figwheel.org/
Note that this is basically Figwheel 2.0, but under a new name. It is much better than the original Figwheel.
Go through the tutorial at figwheel.org, and build your CLJS code in a separate project directory from your back-end code.
Also, be sure to use the Clojure CLI/Deps to build the CLJS project (i.e. not Leiningen). CLI/Deps is much easier to use for ClojureScript projects than Leiningen.
https://clojure.org/guides/deps_and_cli
https://clojure.org/reference/deps_and_cli

How to use ES6 modules that import modules with relative paths in ClosureScript?

I am attempting to use Twitter's Bootstrap 4 (beta) in a ClojureScript app. Using the :npm-deps compiler option does not work due to CLJS-2369. So my next attempt is to use the :foreign-libs compiler option (see github.com/au-phiware/cljsbuild-bootstrap4):
:foreign-libs [{:file "node_modules/bootstrap/js/src/util.js"
:provides ["bootstrap.util"]
:module-type :es6}
{:file "node_modules/bootstrap/js/src/alert.js"
:provides ["bootstrap.alert"]
:requires ["bootstrap.util"]
:module-type :es6}]})
In code, I require the module as:
(ns cljsbuild-bootstrap4.core
(:require [bootstrap.alert :as alert]))
But I encounter this error:
events.js:160
throw er; // Unhandled 'error' event
^
Error: Can't resolve './util' in '~/cljsbuild-bootstrap4'
at onError (~/cljsbuild-bootstrap4/node_modules/enhanced-resolve/lib/Resolver.js:61:15)
at loggingCallbackWrapper (~/cljsbuild-bootstrap4/node_modules/enhanced-resolve/lib/createInnerCallback.js:31:19)
at runAfter (~/cljsbuild-bootstrap4/node_modules/enhanced-resolve/lib/Resolver.js:158:4)
at innerCallback (~/cljsbuild-bootstrap4/node_modules/enhanced-resolve/lib/Resolver.js:146:3)
at loggingCallbackWrapper (~/cljsbuild-bootstrap4/node_modules/enhanced-resolve/lib/createInnerCallback.js:31:19)
at next (~/cljsbuild-bootstrap4/node_modules/tapable/lib/Tapable.js:252:11)
at innerCallback (~/cljsbuild-bootstrap4/node_modules/enhanced-resolve/lib/Resolver.js:144:11)
at loggingCallbackWrapper (~/cljsbuild-bootstrap4/node_modules/enhanced-resolve/lib/createInnerCallback.js:31:19)
at next (~/cljsbuild-bootstrap4/node_modules/tapable/lib/Tapable.js:249:35)
at resolver.doResolve.createInnerCallback (~/cljsbuild-bootstrap4/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js:44:6)
Note: I also tried the following :foreign-libs option but received the same result:
:foreign-libs [{:file "node_modules/bootstrap/js/src"
:module-type :es6}]})
This is a problem with 1.9.946. No longer reproducible with 1.10.238.
checked from CLJS-2369

Difference between figwheel and (watch and reload)

I am trying to learn clojurescript by building a desktop application. The boot configuration I am working with as follows:
(def +name+ "visivo/desktop")
(def +version+ "0.0.1-SNAPSHOPT")
(def +description+ "Desktop application for visivo")
(def +repository+ "https://gitlab.com/visivo/desktop")
(set-env!
:source-paths #{"src/cljs"}
:resource-paths #{"resources"}
:dependencies '[
[org.clojure/clojure "1.9.0-alpha20"]
[org.clojure/clojurescript "1.9.908"]
[org.clojure/tools.nrepl "0.2.12" :scope "test"]
[com.cemerick/piggieback "0.2.2" :scope "test"]
[weasel "0.7.0" :scope "test"]
[adzerk/boot-cljs "2.1.3" :scope "test"]
[adzerk/boot-cljs-repl "0.3.3" :scope "test"]
[adzerk/boot-reload "0.5.2" :scope "test"]
[proto-repl "0.3.1" :scope "test"]
[proto-repl-charts "0.3.2" :scope "test"]
[boot-codox "0.10.3" :scope "test"]])
(require
'[adzerk.boot-cljs :refer [cljs]]
'[adzerk.boot-cljs-repl :refer [cljs-repl start-repl]]
'[adzerk.boot-reload :refer [reload]]
'[codox.boot :refer [codox]])
(task-options!
pom {:project 'visivo/desktop
:version +version+
:description +description+
:url +repository+
:scm {:url +repository+}
:license {"Eclipse Public License"
"http://www.eclipse.org/legal/epl-v10.html"}})
(deftask prod []
(comp (cljs :ids #{"main"}
:optimizations :advanced)
(cljs :ids #{"renderer"}
:optimizations :advanced)))
(deftask dev []
(comp
(speak)
(watch)
(cljs-repl :ids #{"renderer"})
(reload :ids #{"renderer"}
:ws-host "localhost"
:on-jsload 'visivo.renderer/init
:target-path "target")
(cljs :ids #{"renderer"})
(cljs :ids #{"main"}
:compiler-options {:asset-path "target/main.out"
:closure-defines {'visivo.main/dev? true}})
(target)))
(deftask docs []
"Generates documentation for the project from comments"
(comp (codox
:name +name+
:description +description+
:version +version+
:language :clojurescript
:output-path ".")
(target :dir #{"docs"})))
I am willing to add a task to run figwheel. But before doing that I wanted to know whats the difference between using figwheel and (watch and reload) functions as described in dev task?
Here's some quotes about the differences between the two:
figwheel -> https://github.com/adzerk-oss/boot-reload It's not as smart as figwheel because u can lose state, but it's mostly enough. We are actually quite fine with reloading the page manually most of the time.
Figwheel has more bells and whistles but the core functionality should be very similar -- martinklepsch
Figwheel at it's core is the same as what boot-reload can do for you if you develop a Hoplon app

Why my function in .vimrc got called automatically?

As I know, we could define function in .vimrc as below:
function Fun()
do something here
endfunction
Then we could call it like :call Fun().
For one of my system, there's only the function definition in my .vimrc, however the function is always exectued once I get into vim. Why?
Below is version of my vim:
# vi --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Feb 17 2012 10:24:10)
Included patches: 1-411
Modified by <bugzilla#redhat.com>
Compiled by <bugzilla#redhat.com>
Small version without GUI. Features included (+) or not (-):
-arabic -autocmd -balloon_eval -browse +builtin_terms -byte_offset -cindent
-clientserver -clipboard -cmdline_compl +cmdline_hist -cmdline_info -comments
-cryptv -cscope -cursorshape -dialog -diff -digraphs -dnd -ebcdic -emacs_tags
-eval -ex_extra -extra_search -farsi -file_in_path -find_in_path -float
-folding -footer +fork() -gettext -hangul_input +iconv -insert_expand +jumplist
-keymap -langmap -libcall -linebreak -lispindent -listcmds -localmap -menu
-mksession -modify_fname -mouse -mouse_dec -mouse_gpm -mouse_jsbterm
-mouse_netterm -mouse_sysmouse -mouse_xterm +multi_byte -multi_lang -mzscheme
-netbeans_intg -osfiletype -path_extra -perl -printer -profile -python
-quickfix -reltime -rightleft -ruby -scrollbind -signs -smartindent -sniff
-startuptime -statusline -sun_workshop -syntax -tag_binary -tag_old_static
-tag_any_white -tcl +terminfo -termresponse -textobjects -title -toolbar
-user_commands -vertsplit -virtualedit +visual -visualextra -viminfo -vreplace
+wildignore -wildmenu +windows +writebackup -X11 -xfontset -xim -xsmp
-xterm_clipboard -xterm_save
system vimrc file: "/etc/virc"
user vimrc file: "$HOME/.vimrc"
user exrc file: "$HOME/.exrc"
fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -O2 -g -pipe -Wall -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=1
Linking: gcc -L/usr/local/lib -o vim -lm -lselinux -lncurses -lacl
And my .vimrc:
# cat ~/.vimrc
function Fun1()
:!ls
endfunction
Function name doesn't matter, I've changed the name as a test.
Update on July 8, 2015:
According to the answer from Ben, and since I'd like my .vimrc be compatible over multiple environments, I wrap the function definition with if has('eval')...endif as my finial solution:
if has('eval')
function! Fun1()
do something
endfunction
endif
Your vim is compiled without "eval" support. That means your Vim does not support defining functions. The opening function Fun1() command is therefore invalid, and ignored. Then the function definition is executed because those are valid commands.
You will need to install a more fully-featured Vim, or compile your own Vim, or find an alternate Vim installation on your system that has more features. "eval" comes with a NORMAL or larger feature set.

lein and lein-test-out plugin

I would to like use lein-test-out plugin from https://github.com/arohner/lein-test-out/ or from https://clojars.org/org.clojars.jaley/lein-test-out
But when I use [lein-test-out "0.1.0"] in dev-dependecty nothing heppens, when I use
:profiles {:dev {
:dependencies [[junit/junit "4.10"]
[lein/test-out "0.2.0"]]
:plugins [[lein-test-out "0.2.0"]]
I have get:
leiningen.test-out Problem loading: Could not locate clojure/contrib/find_namespaces__init.class or clojure/contrib/find_namespaces.clj on classpath:
Full project.clj:
(defproject dataserver "0.1.0-SNAPSHOT"
:aot [#"a\.b\..*"]
:omit-source true
:warn-on-reflection true
:min-lein-version "2.0.0"
:source-paths ["src-clj"]
:resource-paths ["/home/storm/storm/conf/storm.yaml" "resources"]
:uberjar-name "b.jar"
:uberjar-exclusions [#"log4j.properties"]
:main a.b.repl
:ring {:handler a.b.topmanager.core/app}
:dependencies [[org.clojure/clojure "1.4.0"]
[org.clojure/data.json "0.1.3"]
[org.clojure/data.priority-map "0.0.1"]
[com.rabbitmq/amqp-client "2.8.4"]
[org.scribe/scribe "1.3.1"]
[http.async.client "0.4.5"]
[org.clojure/tools.logging "0.2.4"]
[clj-redis "0.0.12"]]
:profiles {:dev {
:dependencies [[storm "0.7.3" :exclusions [org.clojure/tools.loggin org.clojure/tools.cli compojure hiccup
ring/ring-jetty-adapter backtype/jzmq]]
[org.clojure/data.xml "0.0.6"]
[org.clojure/data.zip "0.1.1"]
[compojure "1.0.4"]
[ring/ring-jetty-adapter "1.1.1"]
[org.slf4j/slf4j-log4j12 "1.6.6"]
[junit/junit "4.10"]
[org.clojars.jaley/lein-test-out "0.1.1-SNAPSHOT"]]
:plugins [[lein-ring "0.6.7"]
[lein-test-out "0.1.1"]]
}}
:jvm-opts ["-Dfile.encoding=UTF-8"
"-Dstorm.jar=target/b.jar"]
:repl-options {:timeout 60000})
lein-test-out seems to expect clojure.contrib.find-namespaces from clojure.contrib. You could try adding clojure.contrib 1.2 to your dependencies, but keep in mind that clojure.contrib is not fully compatible with clojure 1.3 and up while lein-test-out itself requires 1.3, so it looks like if you need something reliable, you would either fix it yourself, get someone else to fix it for you or not use lein-test-out.