graulich
I'm new here

Modulentwicklung, Classloader

Hallo zusammen,

aktuell haben wir ein paar Fragen zur Modulentwicklung.

Es geht um die Erreichbarkeit von Klassen im Modul, wenn man diese aus Skripten und ScheduleTasks heraus aufruft.

Wir würden gerne alle jar's / lib's die unser Modul "mitbringt" als scope="module" definieren - damit es keine Überschneidungen/Konflikte mit anderen Modulen gibt.

Gibt es einen einfacheren Weg solche Modul-Scope-Klassen aus Skripten und Tasks heraus aufzurufen, als diese einzeln in einer Public-Komponente des Moduls anzugeben?

Aktuell sind solche öffentlichen Klassen in unserem Modul in jars enthalten, die als Module-Scope-Resource definiert sind und die Klassen selbst implementieren das Executable Interface. Dadurch sind diese Klassen dann über:

#!executable-class

de.hlp.irgendein.KlassenName

aus Skripten und Aufträgen heraus aufrufbar.

Geht das auch einfacher?

Beste Grüße

Dominic Graulich

4 Replies
marro
Crownpeak employee

Hallo Dominic,

das ist genau der vorgesehene Weg. Empfindest Du diesen Weg als zu umständlich?

Viele Grüße

Donato

0 Kudos

Hallo Donato,

das Problem hierbei ist (Dominic und ich arbeiten am selben Modul), dass wir eine Developer-Library gebaut haben, die mittlerw. aus mehr als 250 Klassen besteht, von denen viele externe Bibliotheken nutzen. Für all diese Klassen benötigen wir daher momentan die executable-Klassen, um am Ende ein sauberes Modul zu haben. Das bläht das ganze Modul, sowie die module.xml natürlich unnötig auf. Natürlich wäre es hierbei schön, wenn man das Ganze etwas einfacher umsetzen kann, z.B. über die Angabe von public-packages statt public Klassen in der module.xml und eine separate Implementierung des Executable-Interfaces nicht nötig wäre. Aber da das anscheinend nicht möglich ist, werden wir wohl mal probieren müssen, wieviel wir  per Maven beim Bauen des moduls automatisieren können. Ein automatisches Auslesen aller Executable-Klassen als Maven-Plugin habt ihr nicht zufällig schon parat, oder?

Gruß

Felix

0 Kudos

Hallo Felix,

wir arbeiten zwar auch mit Maven und habe entsprechende Plugins um Module zu bauen. Das automatische Auslesen der Executable-Klassen und die Generierung der module.xml mit diesen Informationen haben wir leider auch noch nicht.

Gruß

Thorsten

0 Kudos

Sollte mit dem ClassScanner aus dem ASM-Projekt aber kein großer Aufwand sein Smiley Wink

Peter
0 Kudos