Über uns
Bei 1C entwickeln wir nicht nur eine Plattform
Eintrag
Am häufigsten verwenden wir Maven als Build-System für Java-Anwendungen. In diesem kurzen Artikel möchten wir über eines der Probleme sprechen, mit denen wir bei der Organisation der Entwicklung konfrontiert waren, und über den Ansatz, der es uns ermöglichte, dieses Problem zu überwinden Problem.
Voraussetzungen und Arbeitsablauf
Aufgrund der Besonderheiten der Entwicklung in unseren Maven-Projekten verwenden wir eine ganze Reihe von Modulen, Abhängigkeiten und untergeordneten Projekten. Die Anzahl der POM-Dateien in einem Baum kann Dutzende oder sogar Hunderte betragen.
Es scheint: Keine große Sache, sie haben es einmal erstellt und dann vergessen. Wenn Sie in allen Dateien auf einmal etwas ändern oder hinzufügen müssen, gibt es in Editoren und IDEs viele praktische Tools. Was ist die häufigste regelmäßige Änderung an pom.xml? Wir glauben, dass sich Änderungen in Projektversionen und Abhängigkeiten ergeben. Vielleicht möchte jemand dagegen argumentieren, aber genau das ist bei uns der Fall. Der Grund liegt in der Tatsache, dass wir zusammen mit dem Kernel gleichzeitig viele unserer eigenen Bibliotheken entwickeln und für die ständige Reproduzierbarkeit von Build- und Testergebnissen erscheint uns die Verwendung von Snapshots kein bequemer Ansatz. Aus diesem Grund ist es notwendig, die Versionsnummer in Projekten mit jedem Build zu erhöhen.
Außerdem muss ein Entwickler von Zeit zu Zeit seinen eigenen Zweig einer Bibliothek erstellen und seine Funktionalität anhand aller Abhängigkeiten prüfen, wofür er die Version aller Abhängigkeiten manuell ändern muss.
Erste Lösung
Bei solch häufigen und mehrfachen Versionsänderungen möchte ich den Prozess innerhalb von CI vereinfachen und automatisieren. Hier hilft ein praktisches, bekanntes Plugin. Versionen-Maven-Plugin - Anschließen und starten
mvn -N Versionen:set -DnewVersion=2.0.1
und Maven wird alles so machen, wie es sollte: Es wird die Hierarchie von oben nach unten durchlaufen und alle Versionen ersetzen – Schönheit! Jetzt müssen Sie nur noch eine Pull-Anfrage stellen, die Kollegen überprüfen die Änderungen und Sie können schnell dem Trunk beitreten. Schnell? Egal wie es ist. Ein paar Hundert pom.xml zur Überprüfung, und dies zählt nicht den Code. Darüber hinaus ist niemand vor Zusammenführungskonflikten bei einer so großen Anzahl geänderter Dateien sicher. Hierbei ist zu beachten, dass im CI-Prozess Versionsänderungen automatisch zusammen mit Änderungen der Funktionalität erfolgen und nicht irgendwie separat.
Neue Funktionen
Für eine Weile beruhigten wir uns und resignierten und lebten so, bis die Jungs aus
mvn -Drevision=2.0.0 sauberes Paket
Systemeigenschaftswerte haben Vorrang vor den in definierten Wertenimmobilien>.
Elternteil
4.0.0
org.apache
Apache
18
org.apache.maven.ci
ci-parent
Erste CI-freundlich
${revision}${sha1}${changelist}
...
1.3.1
-SCHNAPPSCHUSS
Nachkomme
4.0.0
org.apache.maven.ci
ci-parent
${revision}${sha1}${changelist}
org.apache.maven.ci
Ci-Kind
...
Wenn Sie Version 2.0.0-SNAPSHOT erstellen möchten, dann verwenden Sie einfach
mvn -Drevision=2.0.0 sauberes Paket
Wenn Sie eine Freigabe vornehmen möchten, setzen Sie SNAPSHOT einfach zurück
mvn -Dchangelist= sauberes Paket
*Die obigen Beispiele stammen aus
Die harte Realität
Alles ist gut und gesund, es ist Zeit, ein Gefühl der Zufriedenheit zu verspüren, aber nein. Es stellt sich heraus, dass diese Methode für die Installation und Bereitstellung nicht funktioniert, da sie in den Beschreibungen der im Repository veröffentlichten Artefakte nicht ersetzt wird ${revision} über seine Bedeutung und Maven wird nicht mehr verstehen, worum es geht.
org.apache
Apache
${revision}
Ein Licht am Ende eines Tunnels
Wir müssen nach einer Lösung für das Problem suchen. Hätte die Situation retten können
Hinzufügen eines Plugins zum Projekt
org.codehaus.mojo
Flatten-Maven-Plugin
1.1.0
WAHR
gelöstCiFriendliesOnly
ebnen
Prozessressourcen
ebnen
glätten.sauber
sauber
sauber
Fertig!
Glückliches Ende
Um von nun an die Version des gesamten Projekts zu ändern und alle Abhängigkeiten darüber zu informieren, müssen wir nur noch das Element bearbeitenRevision> nur im Stammverzeichnis pom.xml. Nicht hundert oder zwei dieser Dateien mit der gleichen Änderung gelangen zur Überprüfung, sondern eine. Nun, es besteht keine Notwendigkeit, es zu verwenden Versionen-Maven-Plugin.
Source: habr.com