簡體   English   中英

使用 OSGi 設置 Maven 多模塊項目的反饋

[英]Feedback on Maven multi-module project setup with OSGi

我正在與 OSGi 取得聯系並嘗試使用 Apache Felix 和 Maven 設置一個項目。 我想使用多模塊構建和聲明性服務。 該項目托管在 GitHub 上: osgi-maven-example (請注意,該鏈接指向特定的提交,而不是存儲庫的 HEAD。)

我對項目的整體設置有幾個問題:

  • 根據Neil Bartlett的說法, bnd-maven-plugin應該優先於 Apache Felix Bnd Plugin 使用,因為它尊重 Maven 的生命周期。 從 bnd-maven-plugin 的年代來看,這似乎是一種相對較新的方法,因此我不確定這樣做是否是個好主意。

  • 我正在使用來自 Apache Felix 的聲明性服務包 ( org.apache.felix.scr.annotations ) 來定義我的組件。 maven-scr-plugin使用這些注釋生成服務描述符,這些描述符通過使用bnd.bnd文件中的以下行來包含在MANIFEST.MFService-Component: OSGI-INF/*.xml 這是聲明式服務的使用方式嗎?

  • IntelliJ 在GermanGreeter類中顯示警告: 智能警告
    這到底是什么意思? 我需要關心這個嗎? 我該如何解決?

盡管我對這個工作示例感到非常高興,但我很好奇我是否以預期的方式使用所有這些技術,如果我能在開始在更大范圍內使用它之前獲得有關整體設置的一些反饋,我將不勝感激項目。

現在在包org.osgi.service.component.annotations下有一組官方的 DS 注釋。 這些注解被打包在 jar "compendium" (org.osgi/cmpn) 中,並且 bnd 有一個指令來生成組件描述符: -dsannotations : *

您問題的第一部分取決於意見...... maven-bundle-plugin更“以 maven 為中心”:將它集成到 maven 構建中更容易。 bnd-maven-plugin更“以 bnd 為中心”:您操作標准 bnd 文件,但它打破了一些 maven 約定。 各有利弊

我同意 Jeremie 的意見,您應該使用標准化的注釋。 它們可以與 felix maven-bundle-plugin 以及 bnd-maven-plugin 一起使用。 有關第一個示例,請參閱Apache Karaf 教程第 10 部分 - 聲明性服務 第二,Neil 的這篇文章是一個很好的信息來源。 您不應該需要 scr 插件。

maven-bundle-plugin 非常穩定且易於使用。 它的問題在於它重新定義了 Maven 生命周期,這可能會導致某些項目設置出現問題。 bnd-maven-plugin 在父級中需要更多的 maven xml,但它的優點是它更適合復雜的構建,因為它不會調整 maven。

暫無
暫無

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

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