Mein Projekt besteht aus 5 Unterprojekten. Einer ist ein Krieg, und die anderen 4 sind Gläser. Grundsätzlich benötigt das Kriegsprojekt alle 4 Jar-Projekte und ihre Abhängigkeiten.Wie man Abhängigkeiten von Unterprojekten in Maven behandelt
Ich kann die Abhängigkeiten entfernen, um etwas wie Krieg-> A-> B-> C-> D zu haben. Jedes Unterprojekt fügt seinen Anteil an externen Abhängigkeiten hinzu (Frühling, Struts, Winterschlaf), damit der Krieg am Ende alles bekommt, was er braucht.
Das sieht ziemlich gut organisiert und quadratisch aus, aber dann frage ich mich, ob das sehr praktisch ist, Änderungen vorzunehmen.
Stellen Sie sich vor, ich muss eine Zeile Code in Projekt D ändern, ohne etwas zu seinen Maven-Abhängigkeiten zu ändern. Ich müsste Projekt D offensichtlich erneut veröffentlichen, aber dann muss ich die Projekte C, B, A und den Krieg erneut veröffentlichen, nur um diese Änderung in ihren Pom-Dateien widerzuspiegeln. Dies kann lange und ärgerlich sein, besonders wenn Sie schnell eine neue Version veröffentlichen müssen, um etwas in der Produktion zu reparieren.
Ich könnte den Krieg von allen 4 Projekten abhängig machen, also muss ich nur die Projekt-D-Versionsnummer in der Kriegspom-Datei ändern. Aber dann habe ich Projekt A indirekt abhängig von Projekt D 1.0 und dem Krieg spezifizierenden Projekt D 1.1. Ich denke, dass die direkte Abhängigkeit des Krieges in diesem Fall gewinnen würde, nicht wahr?
Dies würde den neuen Krieg Release schneller machen, aber es würde auch meine Subprojekte Abhängigkeiten, da sie veraltet wäre.
Was wäre ein akzeptabler Weg, um mit dieser Situation umzugehen?
Hallo Gweebz. Danke für die ausführliche Antwort. Ich muss nicht jedes einzelne Teilprojekt einzeln veröffentlichen, also werde ich dieses Aggregator-Konzept, von dem ich nichts wusste, genau betrachten. Die Module enthalten alle Geschäfts- und Datencodes und müssen sich regelmäßig ändern. Eine andere Lösung wäre, die transitiven Abhängigkeiten auszuschließen, wie du gesagt hast, darüber habe ich nicht nachgedacht. Danke für das Licht. – IceGras
Ohne die Notwendigkeit, jedes Modul unabhängig zu veröffentlichen, empfehle ich dringend, die Aggregator-Lösung zu verwenden. Das Muster passt perfekt zu Ihrem Szenario. Froh, dass ich helfen konnte :) –