Maven-bundle-plugin: osgi.ee=UNKNOWN

gjo*_*anv 4 osgi maven bnd maven-bundle-plugin java-10

使用 JDK 10 构建我的 OSGi 包时,maven-bundle-plugin (3.5.1) 生成以下清单属性:

Require-Capability: osgi.ee;filter:="(osgi.ee=UNKNOWN)"
Run Code Online (Sandbox Code Playgroud)

这在运行时失败:

Unresolved requirements: [[com.mycompany.mybundle [1](R 1.0)] osgi.ee; (osgi.ee=UNKNOWN)]
Run Code Online (Sandbox Code Playgroud)

使用 JDK 9 构建时,我得到了预期:

Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=9.0))"
Run Code Online (Sandbox Code Playgroud)

我将 maven-compiler-plugin 的源和目标版本分别设置为“1.9”和“10”。

目前,我正在使用一种解决方法来阻止插件添加osgi.ee到清单:

<configuration>
  <instructions>
      <_noee>true</_noee>
  </instructions>
</configuration>
Run Code Online (Sandbox Code Playgroud)

.. 但我宁愿有正确的 Java 10 要求。

BJ *_*ave 6

您需要一个基于 Bnd 4.0 的更新版本的 maven-bundle-plugin,它增加了对 Java 10 类文件的支持。

  • 事实证明,截至今天,最新版本的 maven-bundle-plugin 是 3.5.1,它仅基于 Bnd 3.5。所以你需要让 maven-bundle-plugin 开发人员更新。或者您可以从 Bnd 团队迁移到 bnd-maven-plugin。但请注意,它的配置和操作方式与 maven-bundle-plugin 不同。 (2认同)