第37章 OSGiプラグイン

The OSGi plugin provides a factory method to create an OsgiManifest object. OsgiManifest extends Manifest. To learn more about generic manifest handling, see 「ManifestManifest. If the Java plugins is applied, the OSGi plugin replaces the manifest object of the default jar with an OsgiManifest object. The replaced manifest is merged into the new one.

OSGiプラグインは OsgiManifest オブジェクトを生成するためのファクトリメソッドを提供します。 OsgiManifestManifest を継承しています。一般的な manifest 操作に関しての詳細については、 「ManifestManifest を参照してください。 Javaプラグインが適用されている場合、OSGiプラグインはデフォルトのjarのmanifestオブジェクトを OsgiManifest オブジェクトに置き換えます。 置き換えられたmanifestは新しいmanifestにマージされます。

The OSGi plugin makes heavy use of Peter Kriens BND tool.

OSGiプラグインは Peter Kriens の BND tool を大いに活用しています。

37.1. 使用方法Usage

To use the OSGi plugin, include the following in your build script:

OSGiプラグインを使うためには、ビルドスクリプトに以下のコードを追加します:

例37.1 OSGiプラグインの利用

build.gradle

apply plugin: 'osgi'

37.2. 暗黙的に適用されるプラグインImplicitly applied plugins

Applies the Java base plugin.

Java ベースプラグインを適用します。

37.3. タスクTasks

This plugin does not add any tasks.

このプラグインはタスクを追加しません。

37.4. 依存関係の管理Dependency management

TBD

TBD

37.5. 規約オブジェクトConvention object

The OSGi plugin adds the following convention object: OsgiPluginConvention

OSGiプラグインは以下の規約オブジェクトを追加します: OsgiPluginConvention

37.5.1. 規約プロパティConvention properties

The OSGi plugin does not add any convention properties to the project.

OSGiプラグインはプロジェクトに規約プロパティを追加しません。

37.5.2. 規約メソッドConvention methods

The OSGi plugin adds the following methods. For more details, see the API documentation of the convention object.

OSGiプラグインは以下の規約メソッドを追加します。詳細については規約オブジェクトのAPIドキュメントを参照してください。

表37.1 OSGiメソッドOSGi methods

メソッドMethod 戻り値Return Type 説明Description
osgiManifest() OsgiManifest OsgiManifestオブジェクトを返す。Returns an OsgiManifest object.
osgiManifest(Closure cl) OsgiManifest クロージャによって構成されたOsgiManifestオブジェクトを返す。Returns an OsgiManifest object configured by the closure.

The classes in the classes dir are analyzed regarding their package dependencies and the packages they expose. Based on this the Import-Package and the Export-Package values of the OSGi Manifest are calculated. If the classpath contains jars with an OSGi bundle, the bundle information is used to specify version information for the Import-Package value. Beside the explicit properties of the OsgiManifest object you can add instructions.

classesディレクトリにあるクラスのパッケージ依存関係と公開するパッケージが解析され、その情報に基づいてOSGi Manifestの Import-PackageExport-Package の値が決定されます。 クラスパスにOSGiバンドル形式のjarがある場合、Import-Packageの値を決定するためにバンドルの情報が参照されます。 OsgiManifest オブジェクトに明示的にinstructionプロパティを追加することでメタデータを追加できます。

例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'    
    }
}

The first argument of the instruction call is the key of the property. The other arguments form the value. They are joined by Gradle with the , separator. To learn more about the available instructions have a look at the BND tool.

instruction の第1引数にはプロパティのキー、第2引数には値を指定します。 それらはGradleによって , で結合されます。 利用可能な instruction の詳細については BND tool を参照してください。