This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-01-10
Channels
- # admin-announcements (7)
- # announcements (3)
- # avi (1)
- # beginners (222)
- # boot (184)
- # braid-chat (75)
- # business (7)
- # cljs-dev (3)
- # cljsrn (9)
- # clojars (17)
- # clojure (131)
- # clojure-dev (1)
- # clojure-portugal (4)
- # clojure-russia (39)
- # clojure-sg (1)
- # clojurescript (140)
- # community-development (563)
- # datomic (5)
- # editors (1)
- # emacs (3)
- # events (3)
- # leiningen (4)
- # off-topic (31)
- # om (84)
- # omnext (1)
- # slack-help (3)
- # yada (5)
After updating boot I get the following exception: Multiple jar entries match : .*/pom.xml Anybody has an idea what could cause that exception.
Released java.util.concurrent.Semaphore@661972b0[Permits = 1]... Installing project.jar... clojure.lang.ExceptionInfo: java.lang.Exception: Multiple jar entries match: .*/pom.xml {:file "/tmp/boot.user209501624813010180.clj", :line 49} at clojure.core$ex_info.invoke(core.clj:4593) at boot.main$main$fn_1272.invoke(main.clj:199) at boot.main$_main.invoke(main.clj:192) at clojure.lang.Var.invoke(Var.java:394) at org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke(ClojureRuntimeShimImpl.java:159) at org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke(ClojureRuntimeShimImpl.java:150) at boot.App.runBoot(App.java:390) at boot.App.main(App.java:467) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at boot.Loader.main(Loader.java:253) Caused by: java.util.concurrent.ExecutionException: java.lang.Exception: Multiple jar entries match: .*/pom.xml at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:192) at clojure.core$deref_future.invoke(core.clj:2186) at clojure.core$future_call$reify__6736.deref(core.clj:6683) at clojure.core$deref.invoke(core.clj:2206) at boot.core$boot.doInvoke(core.clj:801) at clojure.lang.RestFn.invoke(RestFn.java:408) at boot.user$eval489.invoke(boot.user209501624813010180.clj:56) at clojure.lang.Compiler.eval(Compiler.java:6782) at clojure.lang.Compiler.load(Compiler.java:7227) at clojure.lang.Compiler.loadFile(Compiler.java:7165) at clojure.lang.RT$3.invoke(RT.java:319) at boot.main$main$fn_1272.invoke(main.clj:192) ... 11 more Caused by: java.lang.Exception: Multiple jar entries match: .*/pom.xml at boot.pod$find_in_jarfile.invoke(pod.clj:120) at boot.pod$pom_xml.invoke(pod.clj:190) at boot.aether$install.invoke(aether.clj:178) at clojure.lang.Var.invoke(Var.java:388) at clojure.lang.AFn.applyToHelper(AFn.java:160) at clojure.lang.Var.applyTo(Var.java:700) at clojure.core$apply.invoke(core.clj:630) at boot.pod$eval_fn_call.invoke(pod.clj:294) at boot.pod$call_in_STAR_.invoke(pod.clj:315) at clojure.lang.Var.invoke(Var.java:379) at org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke(ClojureRuntimeShimImpl.java:109) at org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.invoke(ClojureRuntimeShimImpl.java:102) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93) at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28) at boot.pod$call_in_STAR_.invoke(pod.clj:318) at boot.task.built_in$fn__2203$fn__2204$fn__2210$fn__2211.invoke(built_in.clj:725) at boot.task.built_in$fn__2078$fn__2079$fn__2085$fn__2086.invoke(built_in.clj:618) at boot.task.built_in$fn__1903$fn__1904$fn__1914$fn__1915.invoke(built_in.clj:495) at boot.task.built_in$fn__1761$fn__1762$fn__1771$fn__1772.invoke(built_in.clj:342) at boot.task.built_in$fn__1594$fn__1595$fn__1601$fn__1602.invoke(built_in.clj:221) at boot.task.built_in$fn__1997$fn__1998$fn__2006$fn__2007.invoke(built_in.clj:555) at boot.core$run_tasks.invoke(core.clj:794) at boot.core$boot$fn__904.invoke(core.clj:804) at clojure.core$binding_conveyor_fn$fn__4444.invoke(core.clj:1916) at clojure.lang.AFn.call(AFn.java:18) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
(task-options! pom { :project 'wareblog :version version } target { :dir '#{"target"} :no-clean false } aot {:namespace '#{wareblog.embedded}} jar { :manifest {"description" "test clojure and boot"} :main 'wareblog.embedded }) (deftask build "Building the project" [] (comp (aot) (target) (pom) (uber) (jar) (install)))
(set-env! :source-paths #{"src/main/clj","src/test/clj","src/main/resources"} :resource-paths #{"src/main/resources","src/test/resources"} :dependencies '[ [adzerk/boot-test "1.0.4"] [adzerk/boot-cljs "0.0-2814-4"] [org.clojure/clojure "1.7.0-RC1"] [environ "1.0.0"] [ring/ring-core "1.3.2"] [http-kit "2.1.18"] [bidi "1.18.11"] [liberator "0.12.2"] [com.taoensso/timbre "3.4.0"];logging [selmer "0.8.2"];templates [com.stuartsierra/component "0.2.3"] ])
but if you really do want to deploy an uberjar to a maven repo you can just specify which pom you want to install/deploy with
I just thought it might be a good idea to install a uberjar, because I wanted to package the application in a single jar file. What is the best way to package an app with all its dependencies in your opinion?
and put the target
task after the jar
task so the jar file is written to the target dir
if you want just the jar file in the target dir you can add this in between the jar
and target
tasks:
Implicit target dir is deprecated, please use the target task instead. Set BOOT_EMIT_TARGET=no to disable implicit target dir.
because most of the time you're either working in the classpath, like when you're testing
I like having an explicit target directory, as in most cases I prefer explicit definition over implicit magic.
Nice work, I am really excited to find out more about boot, have to leave now, thank you for your support.
^ this is so cool!
@richiardiandrea: what? zerobitcoin?
By the way I didn't forget your confetti but the boot porting of my project is going to happen soon 😉
@richiardiandrea: no worries
Actually I thought zerobitcoin was new bitcoins project, but well, dunno
is anyone else having issues with boot 2.6-SNAPSHOT
not finding some project files?
@flyboarder: what kind of issues?
just that some files in my src/ folder are not picked up, it worked fine with 2.5.5
possibly, im not sure what the difference between the files that are picked up and the ones which are not
ill see if i can reproduce on a smaller repo
hahah 😛 yeah it’s weird
@micha: i figured it out, once it hits a folder in src/
in this case src/state
no letters after s in my src/
folder is seen
same issue
@micha: looks like it isnt recursively going through src/
im working on a demo
@micha: I pushed a change and removed all the useless code
@juhoteperi: ^ now people cant easily copy the clojars coordinates anymore
I know... but I hate that each time I do release I forget to run build-jar and then I can't do a release because it updates the readme just before push and then push fails because repo is not clean
It's not possible to use javascript links in github, but it would probably be possible to link to a page which would copy the coordinate upon page load
Guys just a theoretical question, why do I need :scope "test"
when declaring a dependency in boot? Is it the same meaning as in maven?
@richiardiandrea: yes, it prevents that dependency from being included as a transitive dependency of a project that depends on your project
Also prevents the dependency being included in uberjar
thanks!
hey micha, alandipert, are you guys still interested in using something like boot-sassc with JRuby + Sass (for Compass) or did you guys end up rolling your own solution? https://github.com/mathias/boot-sassc/issues/12#issuecomment-132851213
in tenzing
I see that it requires for instance boot-reload
at the beginning of build.boot
but can't I do it just in the development
task (that is where I need it) ?
@richiardiandrea: yes you can
@richiardiandrea: the benefit of adding the test dependency is that you can resolve all your deps at once
@micha thanks, I feel that after setting the options in development
I could call the big require
, or maybe split set-dev!
where I just set deps and development
where I actually require and do stuff...
@micha: great thanks for expanding on this
like if the dependency you add dynamically has transitive dependencies that conflict with ones already loaded
ah wow did not know that
make sense though
Also, without top level require you can't refer to required vars directly but would need to use resolve
to resolve symbols to vars in runtime
so I can't do
(deftask run []
(require
'[adzerk.boot-cljs :refer [cljs]]
'[adzerk.boot-cljs-repl :refer [cljs-repl start-repl]]
'[adzerk.boot-reload :refer [reload]]
'[pandeiro.boot-http :refer [serve]]
'[crisptrutski.boot-cljs-test :refer [test-cljs]])
(comp (serve)
(watch)
(cljs-repl)
(reload)
(build)))
(comp ((resolve 'pandeiro.boot-http/serve)) (watch) ((resolve 'adzerk.boot-cljs.repl/cljs-repl)) ...
would work
Clojure will read the whole file first and try to resolve all symbols to vars, without top-level require reader can't resolve symbols to vars.
understand, but I guess I can stick with the top level require, as the performance hit is minimal
boot
is faster than lein
in any case on my machine
less verbose, I can try that out
clojure.lang.ExceptionInfo: Unable to resolve symbol: cljs in this context
I want tasks to: build jar file, run tests whenever a file is saved, run repl, run app
I read the whole README file, it tells me how boot works and how to create tasks. I've just realized there is "documentation" link right on the top, which points out to the wiki
(deftask build []
(require
'[adzerk.boot-cljs :refer [cljs]])
(comp (speak)
(resolve 'adzerk.boot-cljs/cljs)))
does not work here, but I am just experiment, I will follow the standard path I guess just toying around
@richiardiandrea: Try wrapping (resolve...)
in paretheses
ah! better
right because it returns a function 😄
@micha I was avoiding search for examples right on google or github due to the fact that as boot is a very active project I might end up finding outdated examples, I will focus on wiki and api docs first , thanks
(deftask build []
(require
'[adzerk.boot-cljs :refer [cljs]])
(comp (speak)
((eval 'adzerk.boot-cljs/cljs))
))
works too!@esnunes: we haven't made any breaking changes since 2.0.0, which was december 2014 i think
@micha: I guess you could even think about wrapping this require
plus ((resolve ...))
in some sort of macro that does expose the symbol in the body...jst throwing ideas around 😉
because the require
that's inside the top level form won't be evaluated until the entire top level form is compiled
@micha it feels cleaner (to me at least) to have a require in the task that needs it, that is reason of my idea...but I can live with the way it is now :)