java – 用于将资源从运行jar复制到外部的Idiomatic Clojure
这似乎是一个经典的问题,但我找不到任何关于它的“clojure方式”.
所以,我在资源/(leiningen项目)里面有一个foo /目录.当jar’d / uberjar’d时,这个foo /目录放在jar的根目录下.由于jar中的文件在运行时可能不是物理上一致的,因此您无法使用基本复制功能以递归方式将目录复制到外部世界. 存在几种Java世界的解决方案(例如How to write a Java program which can extract a JAR file and store its data in specified directory (location)?和How to extract directory (and sub directories) from jar resource?),但我没有找到任何现有的Clojure解决方案. 请注意,我正在使用Raynes的fs实用程序库.似乎没有直接执行此功能的功能,但也许我可以使用一些元素来简化流程? (除了明显的基本io糖) 解决方法
几个月前我写了
cpath-clj,它将通过URI列出类路径上的资源.然后,您可以尝试以下操作:
(require '[cpath-clj.core :as cp] '[clojure.java.io :as io]) (doseq [[path uris] (cp/resources (io/resource "foo")) :let [uri (first uris) relative-path (subs path 1) output-file (io/file output-directory relative-path)]] (with-open [in (io/input-stream uri)] (io/copy in output-file))) 由于图书馆没有记住这个用例,因此有一些杂耍: >(cp / resources(io / resource“foo”))将为您提供foo目录的内容 – 如果您只使用了(cp / resources“foo”),则会找到类路径上的所有此类目录, 也许这对你有帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Maven在Windows中的配置以及IDE中的项目创建实例
- java – 无法避免使用Spring Boot和Logback将SQL登录到控制
- PBE_Password-based encryption(基于密码加密)_项目中你也可
- JAVA每月运势api调用代码实例
- java中Calendar类用法实例详解
- java – 无法获得主题
- java – 你学习语言的方式是什么?
- java – 是否有一个实现DUKPT或ANSI X9.24的开源库[已关闭]
- Java Generics:不兼容的类型必需String;发现:java.lang.S
- java – Selenium2和webdriver的一个很好的工作实例