[英]Using annotations from a library which is not a bundle in a Tycho build
我正在使用Tycho构建Eclipse插件,并且正在为我的OSGi服务使用Declarative Services。 Eclipse有一个很好的DS文件编辑器,但它仍然是一个手动过程,这意味着它很慢且容易出错。
在非Tycho OSGi项目中,我可以使用maven-scr-plugin
生成这些注释。 Tycho的问题是我无法添加对org.apache.felix.annotations
jar的引用,因为它是
这些注释使用RetentionPolicy = CLASS
定义,因此它们不必在捆绑中。
我知道对pom-first工件的依赖性 ,但它不适用于我,因为注释jar不是一个包。 理想情况下,我可以在编译时配置Tycho / Eclipse以寻找额外的jar。
如何获得Tycho和Eclipse考虑的仅编译时jar?
更新 :我尝试使用tycho-compiler-plugin
的extraClasspathElements
选项。 这确实允许我调用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。 ServerUtil
您还可以查看完整的构建日志
由于您使用的是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:很多都改变了。 如果时间允许,我会更新我的答案。 在此期间检查注释线程=)
我认为你能做的最好的事情就是分两步将你的建筑分开。 一个用于构建基于felix(scr / bnd)的捆绑包。 结果将在本地maven资源库中,并且所有资源都将与清单和组件xmls捆绑在一起。
由于仅在构建时处理注释,因此对以下步骤不会有任何问题。
第二步是构建基于tycho的工件(bundle,features,rcp,p2等),这些工件将使用第一个构建中的bundle。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.