我正在使用Tycho构建Eclipse插件,并且正在为我的OSGi服务使用Declarative Services。 Eclipse有一个很好的DS文件编辑器,但它仍然是一个手动过程,这意味着它很慢且容易出错。
在非Tycho OSGi项目中,我可以使用maven-scr-plugin
生成这些注释。 Tycho的问题是我无法添加对org.apache.felix.annotations
jar的引用,因为它是
这些注释使用RetentionPolicy = CLASS
定义,因此它们不必捆绑在一起。
我知道dependency on pom-first artifacts,但它对我不起作用,因为注释jar不是一个包。理想情况下,我可以在编译时配置Tycho / Eclipse以寻找额外的jar。
如何获得Tycho和Eclipse考虑的仅编译时jar?
更新:我尝试使用extraClasspathElements
的{{1}}选项。这确实允许我调用tycho-compiler-plugin
(请参阅the current pom.xml)。但是,似乎scr插件无法访问类,因为构建失败并带有
[错误]无法在项目org.apache.sling.ide.eclipse-core:/ mnt上执行目标org.apache.felix:maven-scr-plugin:1.13.0:scr(generate-scr-descriptor) /md/robert/git/sling-ide-tools/eclipse-core/src/org/apache/sling/ide/eclipse/core/ServerUtil.java:无法加载编译的类:org.apache.sling.ide.eclipse .core.ServerUtil
您还可以看到full build log
答案 0 :(得分:1)
由于您使用的是Tycho / Eclipse,因此您可能希望使用“org.eclipse.equinox.ds”而不是“org.apache.felix.annotations”。如果我理解正确,org.eclipse.equinox.ds是一个包。 Tycho FAQ也提到了这一点:
编辑:
http://eclipse.org/tycho/sitedocs/tycho-compiler-plugin/compile-mojo.html#extraClasspathElements
EDIT2:很多都改变了。如果时间允许,我会更新我的答案。检查同时评论线程=)
答案 1 :(得分:0)
我认为你能做的最好的事情就是分两步将你的建筑分开。 一个用于构建基于felix(scr / bnd)的捆绑包。结果将在本地maven存储库中,并且所有存储库和组件xmls都已捆绑在一起。
由于仅在构建时处理注释,因此对以下步骤不会有任何问题。
第二步是构建基于tycho的工件(包,功能,rcp,p2等),这些工件将使用第一个构建中的包。