Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Uberjar aborting because jar failed: duplicate entry: web/utils.cljs #366

timur-han opened this issue Feb 10, 2015 · 8 comments


Copy link

timur-han commented Feb 10, 2015

Hi all,

I can compile my ClojureScripts with the following uberjar profile, i.e., "lein with-profile uberjar cljsbuild once" works fine. However whenever I try to create an uberjar, I receieve the following error and uberjar creattion fails. Do you have any idea what might be the problem?

Compiling ClojureScript.
Uberjar aborting because jar failed: duplicate entry: web/utils.cljs

Uberjar profile:

:uberjar {:local-repo "repo"
           :uberjar-name "myapp-standalone.jar"
           :hooks [leiningen.cljsbuild]
           :cljsbuild {
                       :builds [{
                                        ; The path to the top-level ClojureScript source directory:
                                 :source-paths ["src/main/cljs"]
                                 :jar true
                                        ; The standard ClojureScript compiler options:
                                        ; (See the ClojureScript compiler documentation for details.)
                                 :compiler {
                                            :output-to "src/main/web-app/public/js/main.js"  ; default: target/cljsbuild-main.js
                                            :optimizations :advanced
                                            :pretty-print false}}]}}
Copy link

cemerick commented Feb 19, 2015

Could you paste the entire project.clj?

Copy link

timur-han commented Feb 20, 2015


(defproject my-project "0.2.0-SNAPSHOT"
:description "FIXME: write description"
:url ""
:license {:name "Eclipse Public License - v 1.0"
:url ""
:comments "same as Clojure"}
:min-lein-version "2.5.0"
:dependencies [[org.clojure/clojure "1.6.0"]
[compojure "1.3.1"]
[liberator "0.12.2"]
[enlive "1.1.5"]
[com.novemberain/monger "2.0.0"]
[com.cemerick/friend "0.2.1"]
[friend-oauth2 "0.1.1"]
[enfocus "2.1.0"]
[http-kit "2.1.16"]
[cljs-http "0.1.25"]
[hiccup "1.0.5"]
[cljs-ajax "0.3.9"]
[com.taoensso/timbre "3.3.1"]
[org.clojure/clojurescript "0.0-2740"]
[environ "1.0.0"]
[clojure-saxon "0.9.4"]
[com.cemerick/url "0.1.1"]
[into-edn "1.0.2"]
[org.clojure/data.xml "0.0.8"]
[org.clojure/ "0.1.1"]
[tailrecursion/ring-proxy "2.0.1-SNAPSHOT"]
[com.sun.jersey/jersey-core "1.17"]
[com.sun.jersey/jersey-client "1.17"]
[org.slf4j/jcl-over-slf4j "1.7.6"]
[com.fasterxml.jackson.core/jackson-databind "2.2.2"]];;

;:repositories {"local" ~(str (.toURI ( (str (System/getenv
"project.basedir") "3rdparty-repo"))))}
;;:repositories {"project" "file:repo"}
;;:java-source-paths ["src/main/java"]
:resource-paths ["src/main/resources" "src/main/web-app"]
:source-paths ["src/main/clj"]
:ring {:handler myApp/app}
:uberjar-name "myApp-standalone.jar"
:main myApp.main
:plugins [[lein-environ "1.0.0"]]
:env {:branding "myApp",
:version "0.0.1"})

On Thu, Feb 19, 2015 at 10:38 PM, Chas Emerick

Could you paste the entire project.clj?

Reply to this email directly or view it on GitHub
#366 (comment)

Copy link

ghost commented Jun 29, 2015


Having the same issue with .cljc files. The standard jar task runs, adding source files (.clj/.cljc) and when the cljsbuild hook is called, it tries again to add the same cljc files and this makes the jar task failed.

I had to globally disable the hook and create a specific jar profile to work around this to get the js targets in the jar.

Cljsbuild does not check that the file has not been already added ? Can it verify ?
Not having wrote a significant lein plugin yet I am not aware if this is doable or not.

Thank you

Copy link

elliot42 commented Aug 19, 2015


Copy link

cemerick commented Aug 24, 2015

cljsbuild's hooks need to be eliminated entirely. They are semi-deprecated in Leiningen, in preference of :prep-tasks. For the use case here, eliminate the cljsbuild hook, and add this to your :uberjar profile:

:prep-tasks ["compile" ["cljsbuild" "once"]]

Copy link

cemerick commented Aug 24, 2015

Track #405 for the hook elimination.

Copy link

venantius commented Sep 27, 2015

Would it be possible for this recommendation to either remain as an open issue until fully resolved, or for the README / Wiki to be updated to point people in this direction? I also problems with this and only just stumbled upon this thread.

mneise added a commit that referenced this issue Sep 28, 2015
Copy link

mneise commented Sep 28, 2015

Thank you for the suggestion. I've added a note about this to the README (04c06f6)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
None yet

No branches or pull requests

5 participants