私のホスト プラグインは、別のプラグインへのオプションの依存関係を宣言しています。ホスト プラグインへのフラグメントのビルドで、オプションで必要なプラグインが Tycho で見つかりません。つまり、オプションの依存関係からのクラスを解決できないため、コンパイル エラーが発生します。
ホスト プラグインのオプション フラグを削除すると、Tycho ビルドは正常に動作します。Maven 3.0.4 と Tycho 0.15.0 を使用しています。
私のホスト プラグインは、別のプラグインへのオプションの依存関係を宣言しています。ホスト プラグインへのフラグメントのビルドで、オプションで必要なプラグインが Tycho で見つかりません。つまり、オプションの依存関係からのクラスを解決できないため、コンパイル エラーが発生します。
ホスト プラグインのオプション フラグを削除すると、Tycho ビルドは正常に動作します。Maven 3.0.4 と Tycho 0.15.0 を使用しています。
これが本当に Tycho のバグなのか、それとも仕様によるものなのかはわかりません。
これが観察可能な動作の背景です。Tycho は、バンドルをインストールするときに p2 が行うのと同じ方法で依存関係の解決を行うことを目指しています。バンドルへのオプションの依存関係を宣言すると、そのバンドルは p2 によってインストールされません (他のバンドルまたは機能がそのバンドルへのオプションではない依存関係を持っていない限り)。したがって、この規則に従って、Tycho は、依存関係の解決とクラス パスの計算中に、このオプションの依存関係も考慮しません。
ただし、デフォルトの p2 動作から逸脱するためのスイッチがあります (target-platform-configuration
構成オプションdependency-resolution/optionalDependencies
):
require
を指定すると、現在のバンドルのすべてのオプションの依存関係がコンパイル時に必須として扱われます。通常はこれが必要なので、これがデフォルトです。ignore
を指定すると、現在のバンドルのすべてのオプションの依存関係がコンパイル時に無視されます。この特別な処理は、現在のバンドルのオプションの依存関係にのみ適用され、依存チェーン内の他のバンドルには適用されないことに注意してください。ホスト バンドルは現在、他の依存関係と同様に扱われます。フラグメントを構築するときに、ホスト バンドルを特別に扱うことを検討する場合があります。
回避策として次のオプションがあります。
回避策を見つけました。ホストプラグインのオプションのプラグインを削除し、Manifest-Editorを介してフラグメントに追加しました。その後、それをホストプラグインに再読み込みし、再びオプションとして宣言しました。(プラグインがホストプラグインですでに宣言されている場合、マニフェストエディターのadd-Buttonを介してフラグメントに表示することはできません)しかし、これはtychoのバグだと思います。オプションの依存関係は、Eclipseの場合と同様に、フラグメントでも使用できる必要があります。