p2-maven-plugin - 与其他现有bundle

时间:2017-07-04 11:57:17

标签: eclipse maven osgi p2 bnd

我开始使用 p2-maven-plugin ,以便(希望)方便地将非OSGi JAR集成到我们的项目中。

我有一个我想要OSGi-ify的工件,称为com.thirdparty.artifact。我目前正在使用p2-maven-plugin的standard configuration,我在pom.xml中列出了我的工件,如下所示:

<artifact><id>com.thirdparty:artifact:1.2.3</id></artifact>

此工件具有名为com.thirdparty:library:2.5的传递依赖项,该依赖项导出包com.thirdparty.library,而com.thirdparty:artifact又由mvn p2:site导入。当我运行com.thirdparty:artifact:1.2.3时,我会得到一个包含com.thirdparty:library:2.5com.othervendor:library的P2网站 - 到目前为止一切正常。

现在,事情变得混乱了。我现有的目标平台已经包含一个名为com.thirdparty.library的工件(不同的供应商,它在那里,我无法改变它),导出完全相同的包com.thirdparty:artifact(但完全是不同的版本)。

在运行时,OSGi / Eclipse黑魔法(我可能永远不会完全理解)试图使用com.thirdparty.library和<来解析com.othervendor:library对包com.thirdparty:library:2.5的依赖性。强>不我提供的MANIFEST.MF - 我显然遇到了麻烦。这是我的情况的可视化:

StaightFromDependencyHell

绝对没有OSGi火箭科学家,我的第一个想法是检查com.thirdparty:artifact中的Import-Package: com.thirdparty.library 。除此之外,还显示以下内容:

com.thirdparty:artifact

所以,这显然只是告诉com.othervendor:library某些包中导入这个包,OSGi / Eclipse认为“好吧,com.thirdparty:libraryp2-maven-plugin更充足}”。

似乎有two methods缩小了实际使用的依赖关系。但是:我不确定(a)如何将它们集成到我的p2-maven-plugin工作流程中,以及(b)我不明白为什么Import-Package不会自动要求{{1}中的具体包版本指令(此信息毕竟已在源pom.xml中指定)。

可能我在这里看不到树林。因此,非常欢迎我在上述问题旁边的任何一般性建议!

[edit] 这是我的pom.xml(我即将参加OSGi-ify的具体图书馆是Selenium):

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>com.example.p2dependencies</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <build>
    <plugins>
      <plugin>
        <groupId>org.reficio</groupId>
        <artifactId>p2-maven-plugin</artifactId>
        <version>1.2.0</version>
        <executions>
          <execution>
            <id>default-cli</id>
            <configuration>
              <artifacts>
                <artifact><id>org.seleniumhq.selenium:selenium-java:3.4.0</id></artifact>
              </artifacts>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

[edit2] 问题似乎已经解决,似乎问题是一个仅由com.othervendor:library导出的附加包。

0 个答案:

没有答案