gpt4 book ai didi

clojure - 获取 uberjar 中嵌入的资源列表

转载 作者:行者123 更新时间:2023-12-01 08:59:02 24 4
gpt4 key购买 nike

我正在与 leiningen 和 Clojure 合作创建一个 uberjar,因此我有一个用于部署的文件。我还使用 leiningen 的默认资源路径嵌入了一些静态文件,其名称和数量因构建而异。有没有一种惯用的方法可以从 Clojure 获取嵌入式资源列表?我知道我可以使用 clojure.java.io/resource访问已知文件名,但如何获取文件列表?

最佳答案

以下list-resources函数返回 path 中 jar 中所有文件的列表. running-jar如果它实际上是一个 jar,则保存当前运行的 jar 的路径。

(def ^:private running-jar 
"Resolves the path to the current running jar file."
(-> :keyword class (.. getProtectionDomain getCodeSource getLocation getPath)))

(defn list-resources [path]
(let [jar (java.util.jar.JarFile. path)
entries (.entries jar)]
(loop [result []]
(if (.hasMoreElements entries)
(recur (conj result (.. entries nextElement getName)))
result))))

(take 10 (list-resources running-jar))

关于clojure - 获取 uberjar 中嵌入的资源列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22363010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com