Java 在Eclipse中导出单个.jar时避免重复的library.jar

Java 在Eclipse中导出单个.jar时避免重复的library.jar,java,eclipse,deployment,jar,clojure,Java,Eclipse,Deployment,Jar,Clojure,我正在使用Eclipse的“导出…可运行jar文件”功能打包Clojure+Java应用程序以进行部署 这非常有效,神奇地包括各种资源和Clojure源文件等 我遇到的一个问题是,我多次从依赖于“lib”目录的项目中获得各种库,例如,由于构建路径上的其他项目也使用Clojure,我获得了四个版本的Clojure jar文件 这个问题不必要地将我的.jar文件的大小增加了三倍 除了从生成的jar中手动删除之外,有没有其他方法可以轻松地消除这些重复项 如果您的项目有一个自然的依赖关系图,我会更改您的

我正在使用Eclipse的“导出…可运行jar文件”功能打包Clojure+Java应用程序以进行部署

这非常有效,神奇地包括各种资源和Clojure源文件等

我遇到的一个问题是,我多次从依赖于“lib”目录的项目中获得各种库,例如,由于构建路径上的其他项目也使用Clojure,我获得了四个版本的Clojure jar文件

这个问题不必要地将我的.jar文件的大小增加了三倍


除了从生成的jar中手动删除之外,有没有其他方法可以轻松地消除这些重复项

如果您的项目有一个自然的依赖关系图,我会更改您的eclipse项目设置,这样只有一个项目的构建路径上有jar,并且它会导出该jar(我所说的导出是指从“配置构建路径”对话框中的“顺序和导出”选项卡中导出),以便其他项目查看。其他项目则在构建路径上具有该“核心”项目。我相信这自然会解决你的问题

编辑


我的一个评论是,在罐子里放一个罐子很少是个好主意。我会重新考虑将其打包到一个jar中(除非jar主文件的目的是将其自身内容提取到文件夹中),或者探索使用“将所需库提取到生成的jar中”选项的可能性。

谢谢这是非常有用的建议。我觉得“将所需库提取到生成的jar中”可能是最好的方法,尽管我对潜在的问题有点敏感,例如重复的文件名…@mikera:如果正确有效地使用包名,重复的文件名问题基本上是不成问题的。