【问题标题】:Gradle unable to find downloaded dependency packaged as OSGi bundle (non-OSGi app)Gradle 找不到打包为 OSGi 包的下载依赖项(非 OSGi 应用程序)
【发布时间】:2012-05-22 07:48:18
【问题描述】:

(为澄清而编辑)

我的(非 OSGi)应用程序构建在 Gradle 中,我正在尝试从非常旧的 Jersey 版本(1.1.4.1)升级到更新的版本(1.12?)。我不会假装对使用 OSGi 有任何了解。但是当我将我的 Gradle 依赖项($JERSEY_VERSION 设置为“1.12”)指向:

[group: 'com.sun.jersey', name: 'jersey-server', version: "$JERSEY_VERSION"]

它将 jersey-server-1.12.jar 下载到我的 Gradle 依赖项缓存中的“bundles”目录而不是普通的“jars”目录下,然后 Gradle 似乎没有像它那样在其类路径中包含这个 jar而是在“jars”子目录下。

我发现它在“捆绑包”下,因为 POM 将它标记为启用 OSGi 的 jar。我认为我们不会想要 OSGi 化我们的项目。我是否坚持使用旧版本的 Jersey,或者我还能做些什么让 Gradle 看到 Jersey jar?如果可能,我宁愿手动将文件复制到本地存储库,而是以某种方式依赖 Gradle 的依赖项管理功能(如果可以完成任务)。

【问题讨论】:

    标签: java jar osgi jersey gradle


    【解决方案1】:

    '这是一个愚蠢的疏忽:从 1.1.4.1 迁移到 1.12,POM 依赖项发生了变化,因此 jersey-core.jar 不再被隐式引入。我必须明确添加 jersey-core.jar。我曾认为问题在于 jersey-server.jar 是作为捆绑包导入的,但实际上我只是为 jersey-core.jar 中的一个类获得了 ClassNotFoundException。

    【讨论】:

      【解决方案2】:

      OSGi 包是带有额外清单条目的普通 jar。您应该能够像在任何其他依赖项中一样在非 OSGi 项目中使用它们。它们最终出现在缓存的 bundles 目录中是否有问题?

      【讨论】:

      • 是的,默认情况下,gradle 似乎没有在那里找到它。我不知道是否有任何方法可以配置 gradle 以查看那里。到目前为止,我一直无法在 gradle 文档网页上找到这样的建议。如果需要,我可以手动将 jar 下载到本地存储库中,但我不想这样做。
      猜你喜欢
      • 2021-04-29
      • 2013-03-23
      • 2015-10-04
      • 2017-03-05
      • 2017-03-11
      • 2014-09-12
      • 1970-01-01
      • 2014-04-05
      • 2017-06-05
      相关资源
      最近更新 更多