私の最初のEclipseプラグイン

親愛なるhabretchitel、ご挨拶!

少し前に、Eclipse用のプラグインを作成するという興味深いタスクがありました。 さらに、プラグインは単純ではありませんが、トリッキーなアイデアがあります。

私はEclipse用のプラグインを書いた経験がありませんが、それは必要です-それはとても必要であり、それから何が生まれましたか-Habrokatの下で。



cなアイデアは次のように定式化されました(正確な引用):

「Eclipseには、起動構成の概念があります-ワークスペースからのプロジェクト起動設定。」 これらの起動構成には、起動されるアプリケーションのタイプ(javaアプリケーション、Eclipseプラグイン、JUnitテスト)に応じて異なるプロパティがあります。

1つのワークスペースから複数のアプリケーションを実行する必要がある場合があります。たとえば、クライアントサーバーアプリケーションを作成し、サーバーとクライアントの両方を同時に起動したい場合です。 そのような目的のために、新しいタイプの起動構成-コンポジットがあると便利です。これにより、既存の構成を参照する新しい構成を作成できます。 同時に、この複合構成を開始するときに、それが参照するすべての構成を起動する必要があります。 タスクは、そのような新しい起動構成を追加するeclipse-pluginを実装することです。

それで、この問題を受け取って理解したので、私は普通の人が問題を解決することから始めました-問題の分解。



大きな分解



まあ、概して私が必要とするのは:プラグイン時間、起動構成の作成方法-2つです。



プラグイン



これらの2つの記事は、プラグインを開発するための出発点でした。



記事を読んだ後、プラグインをスカルプトするツールをダウンロードしました。

ここからダウンロード: https : //www.eclipse.org/downloads

何でもダウンロードするだけでなく、「プラグイン開発環境」に含まれるものをダウンロードする必要があります。

ダウンロード-実行。

[ファイル]-> [新規]-> [プロジェクト]-> [プラグインプロジェクト]をクリックします。

表示されるウィンドウ(下図)で[次へ]をクリックします







ウィンドウが表示されます:







標準設定でドライブし、[次へ]をクリックします。

ウィンドウが表示されます:







ここでも、すべてが非常に標準的ですが、kryzh「このプラグインはUIに貢献します」に注意を払う必要があります-UIが不要でセットアップされていない場合は削除します。 次へをクリックします。

次のウィンドウが表示されます。







ここで、プラグインテンプレートを選択できます。上部のkryzhをクリックし、[完了]をクリックしました。

その結果、プラグインプロジェクトが作成され、同様の何かが画面に表示されます。







ここで、[依存関係]タブでプラグインのさまざまな依存関係を追加できます。プラグインの開発では、plugin.xmlファイルが非常に重要な役割を果たします。

それで、プラグインの作り方がわかりました。

次に、起動構成とそれらが何を使用するかに関心があります。



起動構成



それでは、獣の発射構成は何ですか? 本質的に、これは単にプログラムを起動するための構成です。

つまり、プログラムの起動に使用するパラメーターを設定します。

詳細についてはこちらをご覧くださいhttp : //wiki.eclipse.org/FAQ_What_is_a_launch_configuration%3F

起動構成の作成方法については、 http//www.eclipse.org/articles/Article-Launch-Framework/launch.htmlで説明しています



タスクに戻る



そのため、プラグインと起動構成を作成する方法が明らかになりました。

始めましょう。

2つのプラグインを作成します。



上記のリンクでそれを読んだ後、Cap kakbeは、起動構成を実装するにはILaunchConfigurationDelegateインターフェイスを実装する必要があることを示唆しています。

恥ずかしがらずにインターフェースを実装しましょう:



public class CompositeLaunchConfigurationDelegate implements ILaunchConfigurationDelegate { private void launchInnerConfiguration(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor) throws CoreException { ILaunch configurationLaunch = configuration.launch(mode,monitor); for (IDebugTarget debugTarget : configurationLaunch.getDebugTargets()) { launch.addDebugTarget(debugTarget); } for (IProcess process : configurationLaunch.getProcesses()) { launch.addProcess(process); } } @Override public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor) throws CoreException { if(!Utils.isLaunchModeValid(mode)) throw new CoreException(new Status(IStatus.ERROR,Activator.getPluginId(),"launch mode is not valid")); if(!Utils.isConfigurationValid(configuration)) throw new CoreException(new Status(IStatus.ERROR,Activator.getPluginId(),"configuration is not valid")); try { List<ILaunchConfiguration> launchConfigurations = Utils.getInnerConfigurations(configuration); SubMonitor launchMonitor = SubMonitor.convert(monitor, configuration.getName(), launchConfigurations.size()); for (ILaunchConfiguration launchConfiguration : launchConfigurations) { if (!monitor.isCanceled()) { launchInnerConfiguration(launchConfiguration,mode,launch,launchMonitor.newChild(1)); } } } finally{ monitor.done(); } } }
      
      







並行して、複合構成がループしていないことを確認できる機能を作成します(悪の叔父がアトムを取得し、それ自体を参照する構成を作成するため、便利です:))



UIを作る



UIプラグインを使用すると、すべてが非常に簡単になります。

1.設定を含むブックマークを作成する必要があります。

これを行うには、AbstractLaunchConfigurationTabクラスから継承できます。

2.ブックマークのグループを作成します。これには、AbstractLaunchConfigurationTabGroupクラスから継承する必要があります。

合計

これらすべての簡単な操作の結果、そのようなことが判明しました。







左側には使用可能なすべての構成があり、右側には起動される構成があります。



All Articles