评论由:stuart.sierra作出
目前,clojure.java.classpath既没有处理JAR清单文件,也没有处理嵌套JAR文件。正如我之前所提到的,为其实现支持将是困难的,并且近期内不太可能成为我优先考虑的事项。我会愿意审阅添加此功能的补丁,但是它必须证明可以防止递归循环。
根据我阅读的《JAR 文件规范》(链接:http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html 文本),clojure-maven-plugin 的行为可能违背了 JAR 规范的精神,该规范对 “Class-Path” 清单属性描述如下
{quote}
"Class-Path: 这个属性值的用途是指定该应用程序或扩展所需的 相对 URL 。”(加粗内容为强调)
{quote}
clojure-maven-plugin 正在生成一个包含指向其他 JAR 文件的控制台文件(包含“Class-Path”属性的 JAR 文件)的控制台属性,这些其他 JAR 文件并未嵌入到包含控制台属性文件的 JAR 中。
我一直以来都认为,带有 Class-Path 属性的 JAR 清单文件仅在打包完整应用程序或 JDK 扩展时使用,而不是用来指定开发期间类路径的一种机制。显然这是可能的,正如当前 clojure-maven-plugin 所展示的那样,但这不是我想依赖的功能。
通常,JDK 不支持在类路径中列出所有文件,因为类路径可以包括指向远程资源的 URL,这些资源在需要时下载。