2012-03-15 5 views
3

I created a library bundle for commons-lang3これはうまく機能します。私はバンドルを構築し、依存関係を追加して、このバンドルのすべてのクラスを自分のプラグインで使用することができます。OSGi/Equinox/Eclipseでライブラリバンドルのソースを添付するにはどうすればいいですか?

しかし、私はデバッガのソースが表示されません。

このライブラリバンドルのソースバンドルを作成する最も簡単な方法は何ですか?

PS:ライブラリバンドルは元のJARファイルを含むプラグインです。 Eclipseはソースを再度コンパイルしません。既存のJARをクラスパスに追加するだけです。

答えて

1

ソースファイルを独自のjarファイルに追加する場合は、ライブラリバンドルのシンボリック名を指定する 'Eclipse-SourceBundle'エントリを含むMETA-INF/MANIFEST.MFファイルを作成します。以下は、私はフェリックスジャーから持っている例です。

Manifest-Version: 1.0 
Eclipse-SourceBundle: org.apache.felix.main;version="4.0.1";roots:="." 
Bundle-Version: 4.0.1 
Bundle-Name: Apache Felix Framework 
Bundle-ManifestVersion: 2 
Bundle-Vendor: The Apache Software Foundation 
Bundle-SymbolicName: org.apache.felix.main.source 

このソースの瓶は、あなたのPDEターゲット(のWindows-> Preferences->プラグイン開発 - > TargetPlatform)であることを確認してEclipseのソースを表示できるようにするには。 Eclipseをターゲットプラットフォームとして使用している場合は、Eclipseプラグインフォルダにドロップします。

+0

* 2番目のバンドルを作成する必要があるので、単にライブラリバンドルにソースを追加することはできません。 –

+0

2つのバンドルとして完成したのはこれまでに見たことがあります。完成したアプリケーションにソースコードを配備したくないという意味で私にとって意味があります。ソースと「Eclipse-SourceBundle」エントリをライブラリバンドルに追加できますが、試していません。 –

+0

@NickWilson実際、私は通常、完成したアプリケーションにソースコードを配備したいと考えています。そうすることには多くの利点があります。クローズドソースの商用アプリケーションを構築しているのであれば、私はそれをしません。メインバンドルにソースを含める方法については、私の答えを参照してください。 –

5

ソースをバンドルのOSGI-OPT/srcパスの下に含めることができます。 Eclipseデバッガに表示されます(私はEclipseを使用するので、他のIDEについてはわかりません)。 1つのアーティファクトが2つより扱いやすく、そしてBndまたはBndtoolsで構築すると、デフォルトでこのようなバンドルが作成されるため、別のソースバンドルを作成するよりもずっと簡単です。

まれに、リソースが制約された環境に展開する必要がある場合は、OSGI-OPTディレクトリをバンドルから削除するだけで済みます。この名前は、バンドルの操作に影響を与えずに削除できるオプションのデータの規則です。

ちなみに、私たちのアプローチは、しばしば余分なデバッグシンボルを含むUNIX実行可能ファイルと、必要に応じてより小さな実行可能ファイルを作成するためにそれらを削除するコマンドstripからインスピレーションを受けています。

+0

私はあなたを正しく理解していることを確認するだけです。ソースJARを解凍し、ファイルを 'OSGI-OPT/src'フォルダにコピーすれば十分ですか? 'build.properties'や' MANIFEST.MF'にフォルダを追加する必要はありませんか? –

+0

あなたがbndを使用した場合は、-sources:trueを追加してください。 –

+0

pom.xmlでmaven-bundle-pluginを使用する場合は、<_sources>を入力してください。。また、バンドルを設定していることを確認してください。 Eclipseのもう一つの問題は、BJ Hargraveが「デバッグ中にランタイムバンドルコードを表示するにはどうすればよいですか?」、2015年2月、https://グループのように、EclipseプロジェクトのクラスパスにOSGI-OPT/srcを含むバンドルを確実に追加することです。 google.com/d/topic/bndtools-users/tW4e-4TUOqw/discussion – buzz3791

関連する問題