-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Maven build ermöglichen und automatisieren #614
base: master
Are you sure you want to change the base?
Conversation
Geht der maven build ohne Änderung der Verzeichnisstruktur? Das würde den PR deutlich übersichtlicher machen. Es ist ohnehin ein Refactoring geplant. Das wollen wir jedoch schrittweise angehen. |
Kann ich probieren. Macht den build initial komplex, da in src/ Code und Ressourcen liegen. Das würde dann erstmal ein bisschen zaubern müssen. |
d83dc52
to
cbc0a17
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Kannst du die file permission changes (100755 → 100644) bitte in einen separaten PR auslagern? Ich halte sie schon für sinnvoll und wir sollten sie unabhängig von diesem PR mergen. Ich hatte schon geschaut, ob es dafür einen Commit gibt. Leider konnte ich keinen identifizieren, zumindest nicht anhand der commit message.
Dann sind auch noch ein paar Dateien geändert, die glaub ich nichts mit maven zu tun haben (z. B. MitgliedLastschriftAction.java
). Ich nehme an, dass du da EOL von Windows zu Unix geändert hast, oder?
Bitte das auch in einen separaten Commit packen und gern auch in vorgenannten PR auslagern.
Diese Anpassungen sind ungewollt passiert, weil ich unter Windows mit Intellij und vermutlich mit einer unpassenden gitconfig arbeite. Ich schaue mal, ob ich es entfernen kann. |
So besser? |
8647850
to
41fa2b5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Könntest du bitte in der PR-Beschreibung (erster Kommentar) noch ergänzen, wie die Verzeichnisstruktur dann aussieht und was sich am GitHub Actions Workflow ändert (z. B. Caching)?
Ich sehe als Hauptvorteil von Maven, dass wir die Libs aus dem Git Repository entfernen können. Die liegen dann nur noch im local repository. Allerdings entfernt dieser PR sie noch nicht. Das könntest du noch ergänzen.
Oder ist erstmal gedacht, maven nur side-by-side zu verwenden? Dann dürfte der GitHub Actions Workflow jedoch nicht so stark abgeändert werden. Wie ist hier die Intention?
jameica_tag=$(git ls-remote --refs --tags --sort="-v:refname" https://github.com/willuhn/jameica.git V_\* | head -1 | cut -f 2 | cut -d / -f 3) | ||
echo "jameica_tag=${jameica_tag}" >> $GITHUB_ENV | ||
hibiscus_tag=$(git ls-remote --refs --tags --sort="-v:refname" https://github.com/willuhn/hibiscus.git V_\* | head -1 | cut -f 2 | cut -d / -f 3) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hier bestimmen wir die aktuellen release tags dynamisch. In der POM hast du sie hart kodiert. Kann man das auch dynamisieren? Sonst verlieren wir wieder Flexibilität.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Das macht den build aber nicht wiederholbar, da er vom Zustand externer Quellen abhängt. Ich würde vorschlagen renovate einzubauen und sehr bewusst die genutzte Version zu aktualisieren.
pom.xml
Outdated
|
||
<groupId>io.github.openjverein</groupId> | ||
<artifactId>jverein</artifactId> | ||
<version>2.8.24-SNAPSHOT</version> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Das müsste auch irgendwie dynamisiert werden. Wir sind ja gerade bei 2.9.0-nightly
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gibt das maven-release-plugin dafür. Habe ich noch nicht eingebaut. Wie wird jetzt hochgezählt?
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-install-plugin</artifactId> | ||
<version>3.1.3</version> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ich glaub diese Versionen lassen sich auch zentraler konfigurieren. Zumindest geht das bei Gradle.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ja, ich würde aber vorschlagen renovate einzubauen. Das stellt einem automatisch prs mit neuen Versionen zu den plugins.
# Eclipse Core | ||
.project | ||
# JDT-specific (Eclipse Java Development Tools) | ||
.classpath |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Diese Dateien würde ich noch nicht gleich ignorieren. Nicht jeder wird sofort Maven verwenden.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Dies sind bereits drin, aber ich kann es gerne wieder rausschmeißen. Mit Maven Projekten ist aber eher schlechter Stil den .classpath im workspace drin zu lassen, da man dann zwei Wahrheiten hat.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mit Maven und dem m2e plugin kann man sie eigentlich nicht miteinchecken.
740979c
to
adb2834
Compare
Werde ich noch ergänzen.
Ich würde es komplett ändern wollen, würde mir aber wünschen, dass es jemand mal lokal bei sich ausprobiert. Dann würde ich die libs rausschmeißen. Alle können nicht raus, da z.B. nc.jar nicht via Maven herunterladbar ist und diese Version nicht im Internet existier. |
1b17de5
to
de9c8bc
Compare
@@ -1,7 +1,7 @@ | |||
<plugin xmlns="https://www.willuhn.de/schema/jameica-plugin" | |||
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" | |||
xsi:schemaLocation="https://www.willuhn.de/schema/jameica-plugin https://www.willuhn.de/schema/jameica-plugin-1.5.xsd" | |||
name="jverein" version="2.9.0" class="de.jost_net.JVerein.JVereinPlugin"> | |||
name="jverein" version="${project.version}" class="de.jost_net.JVerein.JVereinPlugin"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Dann funktioniert aber die "AboutView" Ausgabe der Version wie in #325 angepasst und damals gefordert nicht mehr.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wenn man es mit maven package
baut, wird mit dem ressource plugin die plugin.xml gefiltert und enthält dann im jverein-<version>.zip
die korrekte Version. In Maven wird man die Version nur einer Stelle pflegen, in der pom.xml. Alles andere wird beim build erzeugt und nutzt die Daten der pom.xml. So wird sichergestellt, dass es keine Inkonsistenzen gibt. Aber das Starten aus dem workspace passt dann nicht, man müsste das plugin.zip entpacken und als plugin verzeichnis für jameica nutzen. Es separat zu verwalten, fände ich schwierig. Du kannst in meinem repo mal ein release anschauen https://github.com/tobidope/jverein/releases/tag/2.9.0-SNAPSHOT. Dort müsste alles passen.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Es wäre eine Option ein profil lokal zu aktivieren z.B. local-test
, dass die plugin.xml für den Test generiert. Die Basis dafür wäre ein plugin.xml aus den src/main/resources
.
Soll ich hier weitermachen, oder ist eine Aufnahme eher unwahrscheinlich? |
� Conflicts: � src/de/jost_net/JVerein/gui/action/NichtMitgliedSucheAction.java � src/main/java/de/jost_net/JVerein/DBTools/DBTool.java � src/main/java/de/jost_net/JVerein/DBTools/DBTool2.java � src/main/java/de/jost_net/JVerein/gui/action/AbrechnungSEPAAction.java � src/main/java/de/jost_net/JVerein/gui/action/AbrechnunslaufListAction.java � src/main/java/de/jost_net/JVerein/gui/action/AbschreibungsListeAction.java � src/main/java/de/jost_net/JVerein/gui/action/AdministrationEinstellungenAbrechnungAction.java � src/main/java/de/jost_net/JVerein/gui/action/AdministrationEinstellungenAllgemeinAction.java � src/main/java/de/jost_net/JVerein/gui/action/AdministrationEinstellungenAnzeigeAction.java � src/main/java/de/jost_net/JVerein/gui/action/AdministrationEinstellungenBuchfuehrungAction.java � src/main/java/de/jost_net/JVerein/gui/action/AdministrationEinstellungenDateinamenAction.java � src/main/java/de/jost_net/JVerein/gui/action/AdministrationEinstellungenMailAction.java � src/main/java/de/jost_net/JVerein/gui/action/AdministrationEinstellungenMitgliedAnsichtAction.java � src/main/java/de/jost_net/JVerein/gui/action/AdministrationEinstellungenMitgliederSpaltenAction.java � src/main/java/de/jost_net/JVerein/gui/action/AdministrationEinstellungenRechnungenAction.java � src/main/java/de/jost_net/JVerein/gui/action/AdministrationEinstellungenSpendenbescheinigungenAction.java � src/main/java/de/jost_net/JVerein/gui/action/AdministrationEinstellungenStatistikAction.java � src/main/java/de/jost_net/JVerein/gui/action/AnfangsbestandListAction.java � src/main/java/de/jost_net/JVerein/gui/action/AnlagenlisteAction.java � src/main/java/de/jost_net/JVerein/gui/action/ArbeitseinsaetzeListeAction.java � src/main/java/de/jost_net/JVerein/gui/action/ArbeitseinsatzUeberpruefungAction.java � src/main/java/de/jost_net/JVerein/gui/action/AuswertungAdressenAction.java � src/main/java/de/jost_net/JVerein/gui/action/AuswertungKursteilnehmerAction.java � src/main/java/de/jost_net/JVerein/gui/action/AuswertungMitgliedAction.java � src/main/java/de/jost_net/JVerein/gui/action/BackAction.java � src/main/java/de/jost_net/JVerein/gui/action/BeitragsgruppeSucheAction.java � src/main/java/de/jost_net/JVerein/gui/action/BuchungsListeAction.java � src/main/java/de/jost_net/JVerein/gui/action/BuchungsartListAction.java � src/main/java/de/jost_net/JVerein/gui/action/BuchungsklasseListAction.java � src/main/java/de/jost_net/JVerein/gui/action/BuchungsklasseSaldoAction.java � src/main/java/de/jost_net/JVerein/gui/action/DbBereinigenAction.java � src/main/java/de/jost_net/JVerein/gui/action/EigenschaftGruppeListeAction.java � src/main/java/de/jost_net/JVerein/gui/action/EigenschaftListeAction.java � src/main/java/de/jost_net/JVerein/gui/action/FamilienbeitragAction.java � src/main/java/de/jost_net/JVerein/gui/action/FelddefinitionenAction.java � src/main/java/de/jost_net/JVerein/gui/action/FormularListeAction.java � src/main/java/de/jost_net/JVerein/gui/action/FreieFormulareAction.java � src/main/java/de/jost_net/JVerein/gui/action/JahresabschlussListAction.java � src/main/java/de/jost_net/JVerein/gui/action/JubilaeenAction.java � src/main/java/de/jost_net/JVerein/gui/action/KontensaldoAction.java � src/main/java/de/jost_net/JVerein/gui/action/KontoListAction.java � src/main/java/de/jost_net/JVerein/gui/action/KursteilnehmerSucheAction.java � src/main/java/de/jost_net/JVerein/gui/action/LastschriftListAction.java � src/main/java/de/jost_net/JVerein/gui/action/LehrgaengeListeAction.java � src/main/java/de/jost_net/JVerein/gui/action/LehrgangsartListeAction.java � src/main/java/de/jost_net/JVerein/gui/action/LizenzAction.java � src/main/java/de/jost_net/JVerein/gui/action/MailListeAction.java � src/main/java/de/jost_net/JVerein/gui/action/MailVorlagenAction.java � src/main/java/de/jost_net/JVerein/gui/action/MitgliedMigrationAction.java � src/main/java/de/jost_net/JVerein/gui/action/MitgliedSucheAction.java � src/main/java/de/jost_net/JVerein/gui/action/MitgliedstypListAction.java � src/main/java/de/jost_net/JVerein/gui/action/MittelverwendungListeAction.java � src/main/java/de/jost_net/JVerein/gui/action/NichtMitgliedSucheAction.java � src/main/java/de/jost_net/JVerein/gui/action/ProjektListAction.java � src/main/java/de/jost_net/JVerein/gui/action/ProjektSaldoAction.java � src/main/java/de/jost_net/JVerein/gui/action/QIFBuchungsImportViewAction.java � src/main/java/de/jost_net/JVerein/gui/action/QIFMitgliederAction.java � src/main/java/de/jost_net/JVerein/gui/action/RechnungListeAction.java � src/main/java/de/jost_net/JVerein/gui/action/SollbuchungListeAction.java � src/main/java/de/jost_net/JVerein/gui/action/SollbuchungMahnungAction.java � src/main/java/de/jost_net/JVerein/gui/action/SollbuchungRechnungMailAction.java � src/main/java/de/jost_net/JVerein/gui/action/SpendenAction.java � src/main/java/de/jost_net/JVerein/gui/action/SpendenbescheinigungAutoNeuAction.java � src/main/java/de/jost_net/JVerein/gui/action/SpendenbescheinigungListeAction.java � src/main/java/de/jost_net/JVerein/gui/action/StartViewAction.java � src/main/java/de/jost_net/JVerein/gui/action/StatistikJahrgaengeAction.java � src/main/java/de/jost_net/JVerein/gui/action/StatistikMitgliedAction.java � src/main/java/de/jost_net/JVerein/gui/action/WiedervorlageListeAction.java � src/main/java/de/jost_net/JVerein/gui/action/ZusatzbetraegeListeAction.java � src/main/java/de/jost_net/JVerein/gui/parts/BuchungListPart.java � src/main/java/de/jost_net/JVerein/gui/parts/SollbuchungPositionListPart.java � src/main/java/de/jost_net/JVerein/gui/view/SpendenView.java � src/main/java/de/jost_net/JVerein/io/ATBank.java � src/main/java/de/jost_net/JVerein/io/ATBankdatei.java � src/main/java/de/jost_net/JVerein/io/Adressbuch/LDIF.java � src/main/java/de/jost_net/JVerein/util/JVDateFormatMMMM.java
# Conflicts: # src/de/jost_net/JVerein/gui/action/StartViewAction.java # src/de/jost_net/JVerein/gui/parts/BuchungListPart.java # src/de/jost_net/JVerein/gui/parts/SollbuchungPositionListPart.java # src/de/jost_net/JVerein/util/JVDateFormatMMMM.java
NumericalChameleon von Sourceforge gezogen und package path angepasst
7f7815b
to
0d2421e
Compare
d08be95
to
4088907
Compare
Mit diesem PR wird der build von JVerein von ant auf Maven umgestellt.
Um den Build mit Maven durchzuführen, sind folgende Schritte notwendig:
mvn -f setup-build.xml initialize
ausführenIn diesem Schritt werden die Quelltexte von Jameica und Hibiscus aus GitHub heruntergeladen, entpackt und gebaut. Die für JVerein benötigten Bibliotheken aus Jameica, Hibiscus und JVerein werden anschließend in das lokale Maven-Repository installiert und stehen damit im eigentlichen Build zur Verfügung. Außerdem wird die Abhängigkeit zu NumericalChameleon von Sourceforge gezogen und verfügbar gemacht.
mvn clean package
ausführenIm Maven-Build werden die Abhängigkeiten nicht mehr aus den lib Ordnern bezogen, sondern ausschließlich aus dem lokalen oder dem zentralen Maven-Repository. Das Ergebnis ist eine Plugin-ZIP, die analog zum früheren Ant-Build erstellt wird. Sourcen, Tests und Ressourcen sind noch an alter Stelle. Es wäre allerdings sinnvoll nach einem Umstieg auf den Maven Standard umzustellen.
Der größte Vorteil besteht für mich darin, dass neue Entwickler:innen, die an JVerein mitarbeiten möchten, weniger manuelle Schritte durchführen müssen und mit einem zeitgemäßen Build-Tool arbeiten können. Dinge wie das Encoding oder die JDK-Version werden automatisch geprüft. In Zukunft könnten wir weitere Maven-Plugins verwenden, um den Entwicklungsprozess weiter zu vereinfachen.
Der ganze build Prozess wird wesentlich vereinfacht und enthält keine dynamischen Abhängigkeiten. Ein neues Release von Hibiscus oder Jameica führt nicht dazu, dass alte Versionen auf einmal nicht mehr bauen. Zudem ist der build schneller, da das caching nur noch die benötigten Abhängigkeiten nutzt. Der Cache schrumpft von 200 MB auf 90 MB.
Bitte testet den Ablauf und gebt eine Rückmeldung, ob dieser PR gemergt werden kann. Die Anbindung an GitHub Actions bringe ich gerade zuende.