【问题标题】:Can I build a JAR that depends on another library without calling that library?我可以构建一个依赖于另一个库而不调用该库的 JAR 吗?
【发布时间】:2016-09-22 16:44:35
【问题描述】:

我想创建一个依赖于 JAR 的 Java 库,但我希望 JAR 由使用我的库/JAR 的项目加载,而不是作为我的库中的依赖项提供。

我需要这样做的原因是有问题的 JAR 是适用于 Android 的 Adob​​e Analytics JAR。这些 JAR 特定于所讨论的项目,但方法、包和类在每个 JAR 中始终命名相同。

在 C/C++ 世界中,您可以为内部构建使用单独的头文件,并为库的用户使用公共头文件。有没有办法在Java中做到这一点?我通常使用 Gradle,但使用其他工具的解决方案非常受欢迎。

【问题讨论】:

    标签: java jar


    【解决方案1】:

    您可以将所有依赖项包含到一个 jar 中,并将该 uber-jar 包含到第三方项目中。

    【讨论】:

    • 与其他答案相同的问题。我不需要在我的 JAR 中包含有问题的 JAR,就好像我这样做 JAR 是错误的一样。我需要该库的用户提供此 JAR 的正确版本,该版本特定于他们的项目。
    • 你可以做到。目标 JVM 的唯一要求是将所有依赖项包含在运行时类路径中。如果您将依赖范围定义为provided,Maven 会为您做这样的事情。这会导致项目编译,但没有应该在运行时“提供”的依赖项。如果将 Maven 用于您的构建是一个可行的选择,那就去吧。您需要的功能开箱即用
    【解决方案2】:

    使用 maven 创建包含所有依赖项的 JAR(所有类都将包含在一个大 JAR 中)-How can I create an executable JAR with dependencies using Maven?

    【讨论】:

    • 我认为这不能回答我的问题。我不需要在我的 JAR 中包含有问题的 JAR,就好像我这样做 JAR 是错误的一样。我需要该库的用户提供此 JAR 的正确版本,该版本特定于他们的项目。
    • 然后告诉用户将他们的 JAR 复制到您的应用程序 Classpath 文件夹中,并将其包含在您的启动脚本中 - stackoverflow.com/questions/219585/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 2014-04-01
    • 2014-05-27
    • 2013-07-19
    相关资源
    最近更新 更多