1. 程式人生 > >Gradle 1.12使用者指南翻譯——第三十七章. OSGi 外掛

Gradle 1.12使用者指南翻譯——第三十七章. OSGi 外掛

本文由CSDN部落格萬一博主翻譯,其他章節的翻譯請參見:

http://blog.csdn.net/column/details/gradle-translation.html

翻譯專案請關注Github上的地址:

https://github.com/msdx/gradledoc/tree/1.12。

直接瀏覽雙語版的文件請訪問:

http://gradledoc.qiniudn.com/1.12/userguide/userguide.html。

另外,Android 手機使用者可通過我寫的一個程式瀏覽文件,帶快取功能的,目前0.2.1版本相容 android 2.2以上系統,地址如下:

http://www.wandoujia.com/apps/com.githang.gradledoc

翻譯不易,轉載請註明本文在CSDN部落格上的出處:

http://blog.csdn.net/maosidiaoxian/article/details/46825947

關於我對Gradle的翻譯,以Github上的專案及http://gradledoc.qiniudn.com 上的文件為準。如有發現翻譯有誤的地方,將首先在以上兩個地方更新。因時間精力問題,部落格中發表的譯文基本不會同步修改。


第三十七章. OSGi 外掛

OSGi 外掛提供了工廠方法來建立一個OsgiManifest物件。OsgiManifest繼承自Manifest。要了解常見的清單處理的更多資訊,請參閱

第 23.13.1節,“Manifest”。如果應用了 Java 外掛,OSGi 外掛將把預設 jar 的 manifest 物件替換為一個OsgiManifest物件。被替換的manifest 會被合併到新的物件單中。

OSGi 外掛使 Peter KriensBND tool大量使用。

37.1. 用法

要使用 OSGi 外掛,請在構建指令碼中包含以下語句:

示例 37.1. 使用 OSGi 外掛

build.gradle

apply plugin: 'osgi'

37.2. 隱式應用外掛

適用於 Java 基礎外掛。

37.3. 任務

此外掛不會新增任何任務。

37.4. 依賴管理

待決定

37.5. 約定物件

37.5.1. 約定屬性

OSGi 外掛沒有向 project 新增任何的公約屬性。

37.5.2. 約定方法

OSGi 外掛添加了以下方法。有關更多詳細資訊,請參見約定物件的 API 文件。

表 37.1. OSGi 方法

方法 返回型別 描述
osgiManifest() 返回一個 OsgiManifest 物件。
osgiManifest(Closure cl) 返回一個通過閉包配置的 OsgiManifest 物件。

在classes 目錄下的類檔案會被分析出關於它們的包的依賴,以及它們所公佈的包名。並基於此計算 OSGi Manifest 中Import-PackageExport-Package的值。如果 classpath 中包含了 jar 包和 OSGi bundle,bundle 資訊會被用來指定Import-Package的值的版本資訊。在OsgiManifest物件的顯式屬性旁邊,你可以新增instructions。

示例 37.2. OSGi MANIFEST.MF 檔案配置

build.gradle

jar {
    manifest { // the manifest of the default jar is of type OsgiManifest
        name = 'overwrittenSpecialOsgiName'
        instruction 'Private-Package',
                'org.mycomp.package1',
                'org.mycomp.package2'
        instruction 'Bundle-Vendor', 'MyCompany'
        instruction 'Bundle-Description', 'Platform2: Metrics 2 Measures Framework'
        instruction 'Bundle-DocURL', 'http://www.mycompany.com'
    }
}
task fooJar(type: Jar) {
    manifest = osgiManifest {
        ~instruction 'Bundle-Vendor', 'MyCompany'
    }
}

instruction 呼叫的第一個引數是屬性的鍵。其他引數構成了它的值。他們由 Gradle 使用,分隔符連線。要了解更多關於 instructions 的資訊,可以看看BND tool