2011-01-03 15 views
0

Ich arbeite derzeit an einem Maven-Java-Webanwendungsprojekt, das ich erweitern muss, um zusätzliche Funktionalität hinzuzufügen, aber ohne die ursprüngliche Codebasis zu ändern. Daher sollte die Webanwendung die neuen Anforderungen an ein anderes jar weiterleiten, das mit ihnen umgehen wird. Das Problem ist, dass wir jar als Pluggable verwenden müssen, damit wir es ersetzen oder mehr jar als weitere Plugins zum Projekt hinzufügen können, ohne die ursprüngliche Codebasis ändern zu müssen, einschließlich der maven pom.xml Datei für jedes neue jar (plugin)) also kann ich die Abhängigkeit von diesem Glas in der Pom-Datei nicht fest codierenErstellen von Pluggable-Projekt mit Maven

So gibt es eine Möglichkeit, das Maven-Profil während des Packens meines Projekts einzustellen, um maven an welche Plugins zu vermitteln?

Antwort

1

Möchten Sie nicht die Möglichkeit haben, jars zur Laufzeit (nicht nur zur Build-Zeit) zu pluggen? Ich würde ein System empfehlen, in dem Sie Ihre Web-App separat erstellen. Dann erstellen Sie Plugin-Jars als separate Projekte. Zur Laufzeit definieren Sie einen Ordner im Dateisystem, in dem Sie nach Plugin-JARs suchen und dann die UrlClassLoader-Instanz erstellen, um auf Klassen in diesen JARs zuzugreifen.

0

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
  1. Man würde Ihr Hauptprojekt, wo Sie die steckbare Natur wollen.

  2. 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.

  3. 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

  1. die Schnittstelle installieren, um MVN
  2. Projekt
  3. Um MVN das Projekt Mutter pom installieren
  4. das vierte Projekt
  5. 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.

Verwandte Themen