2012-04-18 8 views
6

私はsbtosgi pluginを使用して、bndを使用してsbtビルドからOSGiバンドルを生成しています。 sbtosgiバンドルは、osgi-bundleバンドルを生成するタスクを提供します。 sbtプロンプトからosgi-bundleを実行すると、適切なヘッダーを含めるようにJARが更新されますが、クリーンパッケージを実行すると、OSGiヘッダーのないJARが生成されます。 Mavenの話では、パッケージ化= bundleでmaven-bundle-pluginを使用するのと同じことをやろうとしています。つまり、プロジェクトの主な成果物はOSGiバンドルでなければなりません。sbt公開タスクの一部としてsbtosgiを使用してosgiバンドルを生成する方法

sbtosgiプラグインのソースを読んだところ、osgi-bundleタスクはpackageBinによって作成されたJARを上書きしているようです。それは代わりにデフォルトのタスクのOSGiのバンドルのタスクを使用するように、私はpackageBinの定義を上書きしようとした:

packageBin in Compile <<= OsgiKeys.bundle 

しかしこれは循環参照になった:

[error] Cyclic reference involving 
[error] {file:project/*:osgi-bundle 
[error] {file:project/compile:full-classpath 
[error] {file:project/compile:exported-products 
[error] {file:project/compile:package-bin 

私はSBTに、むしろ新たなんですここからどこに行くのかは分かりません。どんな助けもありがとう。

答えて

5

あなたが使ったTwitter経由の私の最初の提案のように見えます。そのために残念。しかし、幸いにもMark Harrahが私の隣に座っていました。

packagedArtifact in (Compile, packageBin) <<= (artifact in (Compile, packageBin), OsgiKeys.bundle).identityMap 

artifact in (Compile, packageBin) ~= (_.copy(`type` = "bundle")) 
+1

ありがとう、これは素晴らしいことです! – mpilquist

関連する問題