在Eclipse插件中使用非OSGi包

时间:2013-05-14 12:03:46

标签: java eclipse-plugin osgi tycho

我目前正在开发Eclipse插件。它的构建和部署由Tycho和Maven支持。现在我想将Googles Guava v.14作为依赖项添加到项目中。 On the Tychos wiki page我发现如果它们是OSGi包,它只能解析依赖关系。我无法找到这个版本的Guava作为OSGi包。那么这种情况的常见解决方法是什么?

  • Guava存储库中查看感兴趣的修订版,添加MANIFEST,将其捆绑并添加到项目路径中,对我来说就像一个非常脏的解决方法 - 我需要自己维护这个包,我不能简单地升级捆绑包,我需要在VCS中为CI提交二进制文件。
  • 执行相同操作但将捆绑包存储在某个maven存储库中 - 维护一个包含源代码的存储库实际上是复制现有的,升级并不是那么简单。

在OSGi项目中导入现有的Java代码非常非常困难。

3 个答案:

答案 0 :(得分:2)

Guava是100%OSGi ...还有一些角色可以达到30

答案 1 :(得分:1)

不要尝试自己将库转换为OSGi包:

  • 或者,将库转换为OSGi包很简单,例如如果可以使用其中一个基于BND的工具生成正确的清单。

    在这种情况下,库的提供者应该直接执行此操作。对于Maven构建,他们只需要添加maven-bundle-pluginbundle目标。

  • 或者,很难将库转换为OSGi包,例如因为库使用的类加载概念在OSGi中不起作用。

    在这种情况下,需要更改库,这只能由库的提供者完成。

答案 2 :(得分:0)

Guava是一个OSGI,将其添加到依赖项部分的pom.xml中

    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>18.0</version> <!--Replace with version you want to use-->
    </dependency>

确保在存储库列表中列出Maven Central存储库

    <repository>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
    </repository>