2016-04-05 9 views
3

私は弱点のために解決できない問題が残っています。追加ツールなしでJavaFx8 + OSGi + Gradleマルチプロジェクトのモジュール式の実例?

私は、各コンポーネントが(モデル+ビュー+コントローラで)「ドメイン単位」を定義するモジュラーJavaFXアプリケーションを作成する必要があります。各コンポーネントは「シェルアプリケーション」(タブビューまたは複数のタブビューのコンテンツとして)にロードすることができ、モジュールは別のモジュールに依存することができます(依存関係がロードされていないとタブ内のコンテンツは表示されません) )。

私はのOSGiベースののJavaFXアプリケーションを作成し、マルチなどのGradleでそれを構築することを計画していた理由です。

これらのチュートリアルのほとんどのことを、私はすでに成功しませんチュートリアルの数十を試したし、私が経験:

  • (例えばelcipseのインターフェース再現性、時代遅れではありません、テンプレートが変更されている、bndtoolsチュートリアルにはありません動作しているように見えますが、偶球はフェリックスなしでは動作しないようですが、javafx8 + osgiは別の種類の問題を生成します...など)
  • は初心者にとって複雑すぎます(私はOSGiとGradleを学び始めました)私が気づいていない重要なステップをスキップしてください
  • にはあまりにも多くの "IDE magic"が含まれています(私はむしろ
  • )日食でフォームを埋める私はに自分のアプリケーションをしたいいくつかの異なるツール(Mavenの/ティコ、bndtools、E(FX)ザ・クリプス)の問題を解決するが、私は彼らに

を学ぶためには時間を得なかっましたIDEの環境から独立している。 I 可能であれば、e(fx)clipseやBndToolsを使用したいと思う。 OSGiの実装を試しているので、私はむしろEquinox 、フェリックス、またはカラフ。

私の主な質問

です..私はすでに.NETの世界で同様のアプリケーションをプログラムしてきましたが、それは私にはJavaの世界で同じことを行うことは不可能だ:

  • は何をすることが可能であるI想像していますか?
  • gradle multiprojectを作成する方法IDE /プラットフォームに依存しないもの(プロジェクトがEclipse環境に拘束されていない場合、または分かりにくいが、それらを使用することができます)
  • アプリケーション(シェルアプリケーション+モジュール)を初期化し、独立したモジュール/バンドル/コンポーネントをロードする最良の方法は何ですか?
  • ビューをサブプロジェクトに分割する方法(build.gradleファイルに含めるもの)
  • どのようにosgiでjavafx8の非互換性を解決するには?
  • javafxプラグインをgradleに適用する正しい方法は何ですか?
  • どのチュートリアルが最も関連性がありますか?
  • (osgi + javafx + gradleのみを使用して)同じ問題を解決するものは、追加のツールを使用しないで、実例、パターンまたはチュートリアルがありますか?
+0

私はあなたのアプリケーションをIDEから独立させたいと思っています。しかし、なぜあなたはBndtoolsを使いたくないのですか?単なるツールであり、アプリケーションはそれに依存しません。 Bndtoolsチュートリアルに問題がある場合は、教えてください...単に「うまくいきません」と言っても、それらを修正するのに役立つわけではありません。ありがとう! –

答えて

2

I貴様のトピックでできたグループご質問:あなたはちょうどそれがモジュール化を奨励するJava仕様である見つけるために周りのgoogleする必要が

OSGI

は、ホットデプロイ機能を提供等々。私が言ったように、Java Servlet APIのような仕様なので、FelixやEquinoxなどのOSGI仕様の異なるプロバイダまたは実装者です。 KarafはFelixをベースにしたOSGIコンテナですので、felixのメリットと中毒性のカラフのネイティブ機能をすべて利用できます。その理由から、私はあなたにKarafを使用させることをお勧めします。

Aquote BndTool

OSGI仕様を満たすためには、あなたのモジュールがKarafは、あなたのバンドルのために必要なクラスローダを作成するように、すべての依存関係の情報を保持しているMANIFEST.MFが含まれていることが必要です。 MANIFEST.MFファイルを手動で作成したくない場合は、そのためにaqute/bndtoolを使用できます。 eclipseプラグイン用のbndtoolで混乱しないでください。このアプリケーションは、コマンドライン、Mavenプラグイン、またはgradleプラグインから使用できます。基本的にクラスをスキャンし、インポートをチェックし、MANIFEST.MFを自動的に作成します。

のGradle

ビルドツールとしてのGradle選択した場合は、使用に取ることができます:Bnd Gradle plugin。セットアップは簡単ですが、非ワークスペースプラグインの指示に従ってください。 eclipse用にBndToolを使用したくない場合。 IDEの独立したソリューションは、あなたの質問で述べた。プロジェクトのレイアウトは次のようになりますどのように

マルチレイアウト

、あなたのモジュール化に依存しますが、マルチ用のGradle +のOSGi + karafを使用しています。このレイアウト例の表情を持つことができます。おそらくあなたにインスピレーションを与えます。

https://github.com/antoniomaria/gradle-karaf-bnd-project

関連する問題