1

我的小程序依赖于两个 JAR 库。每个 JAR 库都依赖于 xercesImpl-2.2.1.jar。不幸的是,他们希望它具有不同的名称:

  • 阿帕奇 FOP 0.20.5

    • META-INF/MANIFEST.MF 中的条目:类路径:xercesImpl-2.2.1.jar...
  • Apache Xalan 2.4.1

    • META-INF/MANIFEST.MF 中的条目:类路径:xercesImpl.jar...

xercesImpl-2.2.1.jar 在标签中指定。我可以在 Java 控制台中看到它已成功下载。但是后来控制台显示尝试读取不存在的 xercesImpl.jar。它一定是从 Xalan 清单中获取的,因为 Web 应用程序代码没有在任何地方指定 xercesImpl.jar。显然它实际上已经有这个 JAR 的内容可用,所以它实际上不需要加载它。

我正在使用 Maven 来管理依赖项,并希望继续使用这两个标准的公共开源库,而不会破坏它们的清单。有关解决此问题的最佳方法的任何建议 - 还是我应该忍受 Java 控制台中的虚假错误?

4

2 回答 2

1

我不是 Maven 专家,但您可能最好不要管依赖项,并以某种方式为您的项目提供一个“目标”,这涉及在其中一个 JAR 文件“进入”您的项目后重新打包它们。

可能的一种方法是使“重新打包的 JAR”工件依赖于“fop”工件,而您的项目依赖于“重新打包的 JAR”工件。类似的东西。

于 2011-01-10T14:04:12.993 回答
0

这是我最新的有点hacky的想法。我创建了有效的空 JAR 文件,其中没有类,并将它们称为 Class-Path 中条目的名称,例如 xercesImpl.jar 。我将把它们放到 src/main/webapp 中,这样它们就会被包含在正确的位置。然后 Java 插件将愉快地下载它们而不是记录错误。

这样我只需要破解 Web 内容(无论如何这都是一团糟),而不是弄乱库 JAR 文件、Maven 依赖项或构建过程。

仍然愿意接受任何更好的建议......

于 2011-02-03T14:35:13.303 回答