@@ -608,25 +608,30 @@ removed, LEIN-PLUGINS, LEIN-MIDDLEWARES and finally PARAMS."
608608 " -- "
609609 params))
610610
611+ (defun cider--dedupe-deps (deps )
612+ (cl-delete-duplicates deps :test 'equal ))
613+
611614(defun cider-clojure-cli-jack-in-dependencies (global-options _params dependencies )
612615 " Create Clojure tools.deps jack-in dependencies.
613616Does so by concatenating DEPENDENCIES and GLOBAL-OPTIONS into a suitable
614617`clojure` invocation. The main is placed in an inline alias :cider/nrepl
615618so that if your aliases contain any mains, the cider/nrepl one will be the
616619one used."
617- (let* ((deps-string (string-join
618- (seq-map (lambda (dep )
619- (format " %s {:mvn/version \" %s \" }" (car dep) (cadr dep)))
620- (append (cider--jack-in-required-dependencies) dependencies))
621- " " ))
620+ (let* ((all-deps (thread-last dependencies
621+ (append (cider--jack-in-required-dependencies))
622+ ; ; Duplicates are never OK since they would result in
623+ ; ; `java.lang.IllegalArgumentException: Duplicate key [...]`:
624+ (cider--dedupe-deps)
625+ (seq-map (lambda (dep )
626+ (format " %s {:mvn/version \" %s \" }" (car dep) (cadr dep))))))
622627 (middleware (mapconcat
623628 (apply-partially #'format " %s" )
624629 (cider-jack-in-normalized-nrepl-middlewares)
625630 " ," ))
626631 (main-opts (format " \" -m\" \" nrepl.cmdline\" \" --middleware\" \" [%s ]\" " middleware)))
627632 (format " %s -Sdeps '{:deps {%s } :aliases {:cider/nrepl {:main-opts [%s ]}}}' -M%s :cider/nrepl"
628633 (if global-options (format " %s " global-options) " " )
629- deps- string
634+ ( string-join all-deps " " )
630635 main-opts
631636 (if cider-clojure-cli-aliases
632637 ; ; remove exec-opts flags -A -M -T or -X from cider-clojure-cli-aliases
0 commit comments