0

Eclipse PDEツールを使用して、一連のプラグイン(最終的にはOSGiバンドル)を機能にコンパイルしようとしています。Springフレームワークに基づくカスタムターゲットプラットフォームがあります。

Eclipseのエクスポートウィザードを使用して機能をエクスポートすると、機能は正常にビルドされますが、feature.xmlファイルからAntビルドスクリプトを生成しようとすると、「サイクル」に関するエラーが発生します。調査を行った結果、エクスポートウィザードに[ターゲットプラットフォームでバイナリサイクルを許可する]チェックボックスがあることがわかりました。チェックを外すと、PDEツールを使用してAntビルドファイルを生成しようとしたときと同じ結果が得られます。

エクスポートウィザードからAntビルドファイルを保存しようとしましたが、Antビルドファイルを実行すると、サイクルが存在することを示す同じエラーが表示されます(ターゲットプラットフォームバンドルを参照します)。

さらに、build.propertiesファイルで「allowBinaryCycles = true」を設定し、Ant Buildスクリプトのプロパティとしても設定しようとしましたが、どちらも結果に影響しませんでした。

ターゲットプラットフォームでバイナリサイクルが許可されるように、エクスポートウィザードから生成されたAntビルドファイルを実行するにはどうすればよいですか?

編集:明確にするために、ここでのエラーはターゲットプラットフォーム(つまり、Spring Framework!)内に存在します。SpringFrameworkにはContextバンドルとORMバンドルの間にサイクルが存在することがわかりました。これはやや面倒であり、2つの適切な回避策が存在します。

  1. 不要な場合はORMバンドルを除外します(これが私の最善の解決策であることがわかりました)
  2. ORMバンドルからコンテキストバンドルへの動的な依存関係を削除します。

春のフォーラムに関するいくつかの議論は、この問題の解決に役立ちました。

もちろん、これらのソリューションはSpringに固有のものです。2番目の問題があるようです-今回はビルダーとしてEclipseを使用します-これらのバイナリサイクルを許可するオプション(ただし、間違っていてもひどい場合もあります)は、ビルダーのGUIバージョンにのみ存在します。最終的に、このオプションがAntビルドタスクに組み込まれることを期待します。

4

2 に答える 2

1

多くの場合、解決するのは苦痛ですが、サイクルはコードの臭いです。可能であれば、回避するのではなく、削除する必要があります。長期的には労力を節約できます。

ハッキーな回避策は、プラグインの依存関係から複合クラスパスを構築し、すべてのクラスを一度にコンパイルすることです。結果のクラスをパスに追加し、各プラグインを順番にビルドします。

于 2009-09-25T15:59:04.453 に答える
0

SpringFrameworkにはContextバンドルとORMバンドルの間にサイクルが存在することがわかりました。これはやや面倒であり、2つの適切な回避策が存在します。

  1. 不要な場合はORMバンドルを除外します(これが私の最善の解決策であることがわかりました)
  2. ORMバンドルからコンテキストバンドルへの動的な依存関係を削除します。

春のフォーラムに関するいくつかの議論は、この問題の解決に役立ちました。

もちろん、これらのソリューションはSpringに固有のものです。2番目の問題があるようです-今回はビルダーとしてEclipseを使用します-これらのバイナリサイクルを許可するオプション(ただし、間違っていてもひどい場合もあります)は、ビルダーのGUIバージョンにのみ存在します。最終的に、このオプションがAntビルドタスクに組み込まれることを期待します。

于 2009-09-29T18:17:27.247 に答える