Srry so spät für die Beantwortung, aber wir hatten auch eine ähnliche Anforderungen so, was wir haben ist, dass wir vier Maven-Projekt
erstellt
Man würde Ihr Hauptprojekt, wo Sie die steckbare Natur wollen.
Zweitens wäre die Schnittstelle, die eine Menge von Interface-Klasse deklarieren würde, die die Pluggable-Plugins implementieren müssten, um im Hauptprojekt aufgerufen zu werden.
- Drittens würde ein POM-Build-Projekt, das als übergeordnetes Projekt für alle benutzerdefinierten Plugins als Modul in pom.xml ähnlich wie die Spring-Start-Projektabhängigkeit fungieren. Jedes neue Plugging, das erstellt werden muss, wird über dieses POM-Projekt als übergeordnetes Projekt verfügen. Dieses Projekt ist im Grunde ein Hilfsprojekt für CICD, sodass unsere benutzerdefinierten Plugins jar erstellt und in unser benutzerdefiniertes Repository verschoben werden. Dies wäre ein Referenzprojekt die alle benutzerdefinierten Plugins als Abhängigkeiten in seiner pom.xml enthält, und diese Projekte Informationen in das Hauptprojekt sein wird, so dass, wenn das Hauptprojekt wird alle benutzerdefinierten Plugins bauen dem classpath des Hauptprojekt
Ihr Haupt Eltern-Plugin Das Projekt wird die zweite Schnittstelle plugin-Referenz als Abhängigkeit in seiner pom.xml haben, so dass die benutzerdefinierten Plugins die Schnittstelle implementieren. Es wird auch die Referenz des vierten Projekts haben, so dass alle benutzerdefinierten Plugins in t sind er Klassenpfad unseres Hauptprojektes.
Wenn Sie jetzt das Eltern-POM-Projekt erstellen, werden alle benutzerdefinierten Plugins als JAR-Datei erstellt und im Ordner ".M2" gespeichert.
nun Zugriff auf diesen benutzerdefinierten Plug-in in Ihrem Hauptprojekt erhalten Sie die Schnittstelle Referenz Abhängigkeit in der pon.xml als Abhängigkeiten und die nun die Build haben müssen, wären
- die Schnittstelle installieren, um MVN
Projekt
- Um MVN das Projekt Mutter pom installieren
- das vierte Projekt
- installieren Um MVN das Hauptprojekt
Um MVN installieren
Sobald das vierte Projekt erstellt wurde, haben Sie alle benutzerdefinierten Plugins in Ihrem Klassenpfad Ihres Hauptprojekts.Dann können Sie mit der Service-Loader-Klasse oder der netbeans-Lookup-Methode alle Klassen laden, die die Schnittstelle implementieren, die im Schnittstellenprojekt definiert wurde.