如何启用/安装"兼容层"在Maven Tycho Surefire中,以便Platform.getPlugin()工作

时间:2016-01-27 17:44:51

标签: eclipse-plugin tycho e4 tycho-surefire-plugin

have a test failure由于来自IllegalStateException的{​​{1}}调用Platform.getPlugin("...") @Deprecated,{#1}}仅在安装了兼容性层时才有效不得另行使用。"

此测试在开发期间在工作空间中工作,但在Maven Tycho Surefire运行时失败(可重现)。我收集到这与org.eclipse.core.runtime.Platform.getPluginRegistry()有关,所以试图在org.eclipse.core.runtime.compatibility中执行此操作:

pom.xml

不幸的是,即使这个(上面)它仍然不起作用 - 我做错了什么?

作为替代方法解决此问题的答案,我想我可以尝试在测试中调整该行以使用另一个API而不是这个被弃用的<plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-surefire-plugin</artifactId> <version>${tycho-version}</version> <configuration> ... <dependencies> <dependency> <type>p2-installable-unit</type> <artifactId>org.eclipse.core.runtime.compatibility</artifactId> </dependency> </dependencies> <bundleStartLevel> <bundle> <id>org.eclipse.core.runtime.compatibility</id> <level>4</level> <autoStart>true</autoStart> </bundle> </bundleStartLevel> </configuration> - 但是如何获得org.eclipse.core.runtime。插件是否给出了ID而没有使用任何需要此兼容性层的弃用API,这导致我在这里出现问题?

1 个答案:

答案 0 :(得分:1)

实际上只是Platform.getBundle()代替Platform.getPlugin()就可以了。

另外,为了防止其他任何人遇到这种情况,额外的依赖配置确实有效 - 它在我的特定测试用例中导致了另外一个无关的IllegalStateException,这引起了我的困惑。