簡體   English   中英

使用來自庫的注釋,該庫不是Tycho構建中的包

[英]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的引用,因為它是

  • 不存在於p2存儲庫中
  • 不是捆綁

這些注釋使用RetentionPolicy = CLASS定義,因此它們不必在捆綁中。

我知道對pom-first工件的依賴性 ,但它不適用於我,因為注釋jar不是一個包。 理想情況下,我可以在編譯時配置Tycho / Eclipse以尋找額外的jar。

如何獲得Tycho和Eclipse考慮的僅編譯時jar?


更新 :我嘗試使用tycho-compiler-pluginextraClasspathElements選項。 這確實允許我調用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://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:很多都改變了。 如果時間允許,我會更新我的答案。 在此期間檢查注釋線程=)

我認為你能做的最好的事情就是分兩步將你的建築分開。 一個用於構建基於felix(scr / bnd)的捆綁包。 結果將在本地maven資源庫中,並且所有資源都將與清單和組件xmls捆綁在一起。

由於僅在構建時處理注釋,因此對以下步驟不會有任何問題。

第二步是構建基於tycho的工件(bundle,features,rcp,p2等),這些工件將使用第一個構建中的bundle。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM