【发布时间】:2015-12-05 14:44:48
【问题描述】:
我在 IntelliJ 中有一个简单的项目,我在其中转到 项目结构 -> 工件 -> 从具有依赖项的模块中添加 Jar -> 复制到输出目录并通过清单链接(清单放在 %ProjectDir%/资源/清单/META-INF/MANIFEST.MF) -> OK -> OK
现在,如果我运行make,jar 将放在out/artifacts 下,如果我查看 jar 内部并打开 META-INF/MANIFEST.MF 文件,它包含正确的 Class-Path 信息。如果我然后回到 IntelliJ,生成一个 ant 构建并运行它,编译后的 jar 中的 META-INF/MANIFEST.MF 的内容现在看起来像这样:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.4
Created-By: 1.7.0_80-b15 (Oracle Corporation)
如您所见,Class-Path 条目已被完全删除,这使我无法从其他地方使用该 jar。
所以我的问题是:有谁知道为什么 intellij 生成的 ant 构建会覆盖 intellij 中内置 makefunctionality 使用的 MANIFEST.MF?
我还可以补充一点,我生成了这个 ant 构建,因为我想做一些简单的事情,比如在编译后将构建的 jar 复制到不同的位置。
编辑:
如果我在生成的 ant 脚本中手动将 <jar ... filesetmanifest="mergewithoutmain"> 更改为 <jar ... filesetmanifest="merge">,则至少原始 MANIFEST.MF 中的 Class-Path 会出现在复制到 jar 文件中的 MANIFEST.MF 中。但是,我真的很想避免以这种方式手动更改生成的 ant 脚本。
【问题讨论】:
标签: java intellij-idea ant