为什么不能找到osgi bundle依赖关系?

前端之家收集整理的这篇文章主要介绍了为什么不能找到osgi bundle依赖关系?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经在我的maven项目中声明了一个OSGi bundle作为依赖. (它恰好恰好是felix容器.)
<dependency>
    <groupId>org.apache.felix</groupId>
    <artifactId>org.apache.felix.framework</artifactId>
    <version>4.0.2</version>
    <type>bundle</type>
    <scope>compile</scope>
</dependency>

当我尝试构建它,它说它找不到它.

[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.

Missing:
----------
1) org.apache.felix:org.apache.felix.framework:bundle:4.0.2

  Try downloading the file manually from the project website.

但是,在中央快速查看会验证这个神器确实在那里.我注意到,如果我将它改为“jar”类型,那么它确实会为我下载jar(bundle).这让我想到了,为什么我把它称为捆绑在一起?嗯,我这样做是因为当我使用m2e来查找这些工件时,它被称为“捆绑”;事实上,m2e生成了我上面提到的那些坐标.

捆绑不是有效的maven工件类型?如果不是,为什么m2e称之为?

在接受的答案中提到,这不是m2e的故障.问题是maven不知道什么是“bundle”.所以你需要添加一个定义它的插件,即maven-bundle-plugin.请注意,您还需要将extensions属性设置为true.所以POM应该有类似的东西
<plugin>
      <groupId>org.apache.felix</groupId>
      <artifactId>maven-bundle-plugin</artifactId>
      <version>2.4.0</version>
      <extensions>true</extensions>
</plugin>

接受答案的问题是,如果类型包的依赖是一个直接的依赖关系,它是有效的;因为它是你的pom声明它,你可以删除类型.但是,如果您的依赖关系本身具有类型绑定的依赖关系,那么您将被拧紧,因为您的传递依赖关系之一是捆绑类型,您不能仅仅删除其中的类型,因为您不是该工件的所有者,并且没有访问pom,这再次你当前的执行不了解.它将尝试寻找repo / your-dependency.bundle

当使用依赖插件来复制依赖关系时遇到这个问题.在这种情况下,插件依赖必须进入插件本身.你只需要依赖插件来了解bundle的插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <dependencies>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>2.4.0</version>
            <type>maven-plugin</type>

        </dependency>
    </dependencies>
    <extensions>true</extensions>
</plugin>
原文链接:https://www.f2er.com/javaschema/281828.html

猜你在找的设计模式相关文章