[英]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.