Gradle を使用して OSGi jar を作成していますが、マニフェストに少し問題があります。これが私のビルドスクリプトからの抜粋です:
apply plugin: 'java'
apply plugin: 'osgi'
jar {
baseName = 'awesome'
manifest {
name = 'An Awesome Application'
symbolicName = 'com.example.awesome'
// instruction 'Import-Package', 'org.springframework.orm'
}
}
上記を使用して、Gradle は依存関係を検出Import-Package
し、コンパイル時のすべての依存関係と共に を追加します。しかし、私のアプリケーションにもランタイム依存関係があるとorg.springframework.orm
したら、それを Gradle に引数として含めるように指示するにはどうすればよいImport-Package
でしょうか?
上記のコメント化された行のコメント化を解除すると、生成されたImport-Package
命令はのみ org.springframework.orm
を指定します。OsgiManifestのGradleドキュメントには次のように記載されているため、これは私を混乱させます
OsgiManifest instruction(String name, String... values)
命令に引数を追加します。命令が存在しない場合は、作成されます。存在する場合、引数は既存の引数に追加されます。
Import-Package
ただし、これは自動検出された引数には適用されないようです。などを指定instruction 'Import-Package', 'my.dependency.1'
して途中で出力すると、順番に追加されていく様子が分かり、生成されたマニフェストに全て表示されるのですが、GradleのOSGiプラグインは手動で指定jar.manifest.instructions
すると自動検出された引数を追加しないようですImport-Package
.
TL;DR:
- 命令を手動で指定しない場合
Import-Package
、コンパイル時の依存関係はすべて自動生成されますが、実行時の依存関係は含まれません。 - 私が行う場合
manifest { instruction 'Import-Package', 'org.springframework.orm' }
、コンパイル時の依存関係は自動的に含まれません。
に追加できるように、ランタイムの依存関係を Gradle に伝えるにはどうすればよいImport-Package
ですか?