【问题标题】:maven-camel build problemmaven-camel 构建问题
【发布时间】:2010-09-27 21:11:15
【问题描述】:

我有一个简单的应用程序,使用 netbeans 进行开发,使用 maven 进行构建等。我的应用程序使用 camel ,配置了 spring XML。我想构建一个带有依赖项的可执行 jar,所以我使用带有 'jar-with-deps' 描述符的 maven-assembly 插件。 jar 构建良好,但我认为由于所有依赖项都已解包,并且其中一些依赖项在与其他依赖项相同的路径中具有相同的资源,因此它们会相互覆盖。我通过使用 winrar 浏览 jar 验证了这一点,我发现在很多地方都出现了同一个文件。我认为这是无法通过一些简单的 Maven 配置来解决的,因为我无法阻止依赖项想要特定路径中的资源,并且也被另一个依赖项使用。顺便说一句,该应用程序在 netbeans 内运行正常。我还看到我的应用程序类多次出现。这更奇怪,但我不知道为什么。

总之,我想知道:

  1. 是否有任何简单的解决方案可以发现此类冲突并至少报告它们,如果没有纠正它们? (以及如何)

  2. 我可以告诉归档程序(在 maven 中)不要解开 deps,而只是将 jar 包含在父 jar 中,然后将 jar 包含在清单类路径中,如何?这会解决问题还是产生相同的结果?

  3. 为什么我的应用程序类在同一路径中也出现多次?

为了让您了解问题,当前生成的 jar 在使用 WinRAR 查看时,在根路径中有 3 个“log4j.properties”实例,在 meta-inf/ 路径中有 7 个文件“spring.schemas”实例,仅举几例。

【问题讨论】:

    标签: maven-2 dependencies executable-jar


    【解决方案1】:

    我认为将所有 .jar 压缩到一个 .jar 中是不可能的。其中许多 .jar 的 .jar 文件(log4j.properties、spring XML 文件)中都有位于同一文件夹中的资源,因此会发生冲突。

    最好提供启动脚本,通过设置类路径来启动你的应用程序。我记得在 JDK1.5 或 1.6 中,您可以将文件夹设置为类路径,它将包含该文件夹中的所有 jar。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-27
      • 2015-08-11
      • 1970-01-01
      • 2019-03-30
      • 2014-08-10
      • 1970-01-01
      • 2013-10-25
      • 2022-11-11
      相关资源
      最近更新 更多