Separate :uberjar-exclusions from skip-set for performance. Fixes #160.
This commit is contained in:
parent
d6fa72818d
commit
cdc38473f8
1 changed files with 12 additions and 13 deletions
|
@ -18,20 +18,19 @@
|
|||
first
|
||||
:content)))
|
||||
|
||||
(defn- skip? [entry skip-set]
|
||||
(reduce (fn [skip matcher]
|
||||
(or skip (if (string? matcher)
|
||||
(= matcher (.getName entry))
|
||||
(re-find matcher (.getName entry)))))
|
||||
false skip-set))
|
||||
;; We have to keep this separate from skip-set for performance reasons.
|
||||
(defn- make-skip-pred [project]
|
||||
(fn [filename]
|
||||
(some #(re-find % filename) (:uberjar-exclusions project))))
|
||||
|
||||
(defn- copy-entries
|
||||
"Copies the entries of ZipFile in to the ZipOutputStream out, skipping
|
||||
the entries which satisfy skip-pred. Returns the names of the
|
||||
entries copied."
|
||||
[in out skip-set]
|
||||
[in out skip-set skip-pred]
|
||||
(for [file (enumeration-seq (.entries in))
|
||||
:when (not (skip? file skip-set))]
|
||||
:let [filename (.getName file)]
|
||||
:when (not (or (skip-set filename) (skip-pred filename)))]
|
||||
(do
|
||||
(.setCompressedSize file -1) ; some jars report size incorrectly
|
||||
(.putNextEntry out file)
|
||||
|
@ -42,18 +41,18 @@
|
|||
;; we have to keep track of every entry we've copied so that we can
|
||||
;; skip duplicates. We also collect together all the plexus components so
|
||||
;; that we can merge them.
|
||||
(defn include-dep [out [skip-set components] dep]
|
||||
(defn include-dep [out skip-pred [skip-set components] dep]
|
||||
(println "Including" (.getName dep))
|
||||
(with-open [zipfile (ZipFile. dep)]
|
||||
[(into skip-set (copy-entries zipfile out skip-set))
|
||||
[(into skip-set (copy-entries zipfile out skip-set skip-pred))
|
||||
(concat components (read-components zipfile))]))
|
||||
|
||||
(defn write-components
|
||||
"Given a list of jarfiles, writes contents to a stream"
|
||||
[project deps out]
|
||||
(let [[_ components] (reduce (partial include-dep out)
|
||||
[(into #{"META-INF/plexus/components.xml"}
|
||||
(:uberjar-exclusions project)) nil]
|
||||
(let [[_ components] (reduce (partial include-dep out
|
||||
(make-skip-pred project))
|
||||
[#{"META-INF/plexus/components.xml"} nil]
|
||||
deps)]
|
||||
(when-not (empty? components)
|
||||
(.putNextEntry out (ZipEntry. "META-INF/plexus/components.xml"))
|
||||
|
|
Loading…
Reference in a new issue