2016-04-05 27 views
3

Şu an için burada çözemediğim bir sorunla karşılaştım.JavaFx8 + OSGi + Gradle multiproject için ek takım gerektirmeden çalışma modüler örnek?

Her bir bileşenin "etki alanı birimi" (modeller + görünüm + denetleyiciler ile) tanımladığı modüler bir JavaFX uygulaması oluşturmam gerekiyor. Her bileşen bir "kabuk uygulamasına" yüklenebilir (sekme görünümü veya çoklu sekme görünümlerinin içeriği olarak) ve modüller başka bir modüle (ler) bağlı olabilir (bağımlılıkları yüklü değilse sekmelerdeki içeriği görünmez)).

Ben JavaFX uygulamayı dayalı bir OSGi oluşturmak ve multiproject olarak Gradle ile inşa planlıyordu yüzden.

Zaten hiçbir başarı ile öğreticiler onlarca denedim ve bu öğreticilerinin çoğunluğu yani deneyimli: (

  • tekrarlanabilir eski olmayan örneğin elcipse arayüzü, şablonlar değişmiştir öğreticiler gelmez bndtools işe yarayacak gibi görünüyor, equinox felix olmadan çalışacak gibi görünmüyor, javafx8 + osgi farklı türde problemler üretiyor ... vb.)
  • yeni başlayanlar için çok karmaşık (sadece OSGi ve Gradle'ı öğrenmeye başladım) ve onlar Önemli adımları atla
  • 'un çok fazla "IDE sihirbazı" olduğunu bilmiyorum (yerine biraz kod yazmayı tercih ediyorum Tutulma doldurarak formlar)
  • bazı farklı araçlar (maven/Tycho, bndtools e (fx) Clipse) ile sorunu çözmek
  • , ama ben benim uygulama istiyorum onlara

öğrenmek için zamanım yok IDE'nin ortamından bağımsız olmak. ,, eğer mümkün ise, (eğer daha kolay inşa edilebilirlerse bile) e (fx) clipse veya BndTools kullanmak istemezler. OSGi uygulamalarını deniyorum, bu yüzden Equinox arasında seçim yapmayı tercih etmem. Felix ya da Karaf.

Benim asıl soruların

vardır .. Zaten .NET dünyasında benzer bir uygulama programlanmış ettik ama bana Java dünyasında aynı şeyi imkansız gibi:

  • ne yapacağını mümkündür Ben hayal ettin mi
  • Bir grapp multiproject nasıl oluşturulur IDE/platform bağımsızdır (projeler tutulma ortamına veya ekinoksa bağlı değilse, ancak bunları kullanmak mümkündür)?
  • Uygulamayı (kabuk uygulaması + modülleri) başlatmanın ve bağımsız modülleri/paketleri/bileşenleri yüklemenin en iyi yolları nelerdir?
  • Görünümlerimi alt projelere nasıl ayıracağım (hangi build.gradle dosyaları içermelidir)?
  • javafx8 inpompatibility ile osgi nasıl çözülür?
  • javafx eklentisini gramaja uygulamanın doğru yolu nedir?
  • En alakalı dersler hangileridir?
  • Aynı problemi çözen (yalnızca osgi + javafx + gradle kullanarak) herhangi bir çalışma örneği, desen veya öğretici (ek araçlar kullanmadan) var mı?
+0

Ben tam olarak IDE bağımsız olması başvurunuzu isteyen destekler. Ama bu neden Bndtools'u kullanmak istemediğin anlamına geliyor? Bu sadece bir araçtır, uygulamanız buna bağlı olmayacaktır. Bndtools eğitimiyle ilgili sorun yaşıyorsanız lütfen bize bildirin. Sadece "işe yaramadıklarını" söyleme, onları düzeltmemize yardımcı olmaz. Teşekkürler! –

cevap

2

Ben grup olabilir değişik konudaki sorularınıza:

OSGI

Sen sadece şu modülleştirme teşvik eden bir java özelliğidir öğrenmek için etrafında google gereken

, özelliği sıcak dağıtmak sağlar, ve bunun gibi. Size söylediğim gibi, Java Servlet API'sı gibi bir spesifikasyon, bu yüzden farklı sağlayıcılar veya Felix ve Equinox gibi OSGI Spesifikasyonu uygulayıcılarıdır. Karaf yerine Felix'e dayanan bir OSGI konteynır, böylece tüm felix faydaları ve bağımlılık karaf yerlilerinin özelliklerine kavuşursunuz. Bu nedenle Karaf'ı kullanmaya başlamanızı tavsiye ediyorum. OSGI şartname karşılamak amacıyla

Aquote BndTool

, kendi modülleri Karaf sizin paketler için gerekli classloader oluşturmak böylece tüm bağımlılık bilgilerin bulunduğu bir MANIFEST.MF içerdiğini gerekir. Bu MANIFEST.MF dosyalarını elle oluşturmak istemediğinizi varsayalım, bunun için aqute/bndtool alabilirsiniz. Eclipse eklentisi için bndtool ile uğraşmayın. Bu uygulama komut satırından, bir maven eklentisinden veya bir not eklentisinden kullanılabilir. Temel olarak sınıflarınızı tarar, ithalatı kontrol eder ve otomatik olarak bir MANIFEST.MF oluşturur. Gradle

bir yapı aracı olarak gradle seçerseniz

, o zaman kullanıma alabilir: Bnd Gradle plugin. Kurulumu kolaydır, ancak çalışma alanı olmayan eklenti için yönergeleri izleyin. Eclipse için BndTool kullanmak istemiyorsanız. IDE bağımsız çözüm, sorunuzda bahsettiniz.

Multiproject Düzeni

proje düzeni, senin modüllendirmeye bağlıdır gibi görünmelidir, ancak + karaf bir multiproject için gradle + OSGi kullanan bu modeli örneği üzerinde bir göz nasıl. Belki size ilham verir.

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