评论由:stuart.sierra 提供
目前,clojure.java.classpath既不处理JAR清单文件,也不处理嵌套的JAR文件。正如我在上一条评论中描述的,实现对此的支持将会很困难,并且不太可能成为我近期的工作重点。我会愿意审查添加此功能的补丁,但它必须证明它可以防止递归循环。
根据我对(链接:[http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html](http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html) 文本:JAR文件规范)的阅读,clojure-maven-plugin的行为可以被认为违反了JAR规范的宗旨,该规范将“Class-Path”清单属性描述如下
{引用}
"Class-Path: 此属性的值指定了该应用程序或扩展需要使用的扩展或库的**相对URL**"(强调已添加)
{引用}
clojure-maven-plugin正在创建一个包含指向其他JAR文件的“Class-Path”属性的JAR清单,这些URL是绝对路径,而这些JAR文件并非嵌入到包含清单的JAR中。
我一直认为,具有Class-Path属性的JAR清单文件仅在打包完整的应用程序或JDK扩展时使用,而不是在开发过程中指定类路径的一种机制。显然,这是可能的,就像当前的clojure-maven-plugin所展示的那样,但这并不是我愿意依赖的功能。
一般来说,JDK不支持列出classpath上的所有文件,因为classpath可以包含指向远程资源的URL,这些资源在需要时下载。