4

我正在使用 Tycho 构建一个 Eclipse 插件,并为我的 OSGi 服务使用声明式服务。Eclipse 有一个不错的 DS 文件编辑器,但它仍然是一个手动过程,这意味着它速度慢且容易出错。

在非 Tycho OSGi 项目中,我可以使用maven-scr-plugin来生成这些注释。Tycho 的问题是我不能添加对org.apache.felix.annotationsjar 的引用,因为它是

  • 不存在于 p2 存储库中
  • 不是捆绑

这些注释是用 a 定义的RetentionPolicy = CLASS,所以它们不必在一个包中。

我知道对 pom-first artifacts 的依赖,但它对我不起作用,因为注释 jar 不是一个包。理想情况下,我可以配置 Tycho/Eclipse 以在编译时查找额外的 jar。

如何获得 Tycho 和 Eclipse 考虑的仅编译时 jar?


更新:我尝试extraClasspathElements使用tycho-compiler-plugin. 这确实允许我调用maven-scr-plugin(请参阅当前的 pom.xml)。但是,似乎 scr 插件无法访问这些类,因为构建失败了

[错误] 无法在项目 org.apache.sling.ide.eclipse-core: /mnt/md/ 上执行目标 org.apache.felix:maven-scr-plugin:1.13.0:scr (generate-scr-descriptor) robert/git/sling-ide-tools/eclipse-core/src/org/apache/sling/ide/eclipse/core/ServerUtil.java:无法加载编译类:org.apache.sling.ide.eclipse.core。服务器实用程序

您还可以查看完整的构建日志

4

2 回答 2

1

由于您使用的是 Tycho/Eclipse,您可能想要使用“org.eclipse.equinox.ds”而不是“org.apache.felix.annotations”。如果我理解正确, org.eclipse.equinox.ds 是一个捆绑包。第谷常见问题解答也提到了这一点:

http://wiki.eclipse.org/Tycho/FAQ#How_to_add_a_undeclared_dependency.3F__.28e.g..2C_OSGi_declarative_service.29

编辑:

http://eclipse.org/tycho/sitedocs/tycho-compiler-plugin/compile-mojo.html#extraClasspathElements

EDIT2:很多东西都变了。时间允许时,我会更新我的答案。同时检查评论线程=)

于 2013-07-24T14:40:13.347 回答
0

我认为你能做的最好的就是把你的建筑分两步分开。一种用于构建基于 felix (scr/bnd) 的包。结果将在本地 Maven 存储库中,并且所有内容都已与清单和组件 xml 捆绑在一起。

由于仅在构建时处理注释,因此后续步骤不会有任何问题。

第二步是构建基于 tycho 的工件(bundles、features、rcp、p2 等),它们将在第一个构建中使用 bundle。

于 2013-07-24T20:29:11.020 回答