Skip to content
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

Upgrade Gradle, Java, Tools #1313

Merged
merged 18 commits into from
Jan 2, 2024
Merged

Upgrade Gradle, Java, Tools #1313

merged 18 commits into from
Jan 2, 2024

Conversation

fwatermann
Copy link
Contributor

@fwatermann fwatermann commented Dec 19, 2023

closes #1010
closes #1050

Hochziehen von Gradle, JDK, spotbugs, spotless, libGDX, Gson.

Gradle: 8.5
JDK: 21
Spotbugs: 6.0.3
Spotless: 6.23.3
libGDX: 1.12.1
Gson: 2.10.1
mockito-core: 5.8.0

#1312 sollte nach diesem PR rebased & gemerged werden, da es Änderungen in Spotless in der neuen Version gibt.

@fwatermann fwatermann added this to the Praxisphase milestone Dec 19, 2023
@fwatermann fwatermann self-assigned this Dec 19, 2023
@cagix
Copy link
Member

cagix commented Dec 19, 2023

@fwatermann Hmmm, unter macOS scheint der Schalter im build.gradle nicht mehr zu funktionieren:

pm-dungeon % ./gradlew run  

> Task :run
operating system 'Mac OS X'
Exception in thread "main" java.lang.IllegalStateException: GLFW may only be used on the main thread and that thread must be the first thread in the process. Please run the JVM with -XstartOnFirstThread. This check may be disabled with Configuration.GLFW_CHECK_THREAD0.
        at org.lwjgl.glfw.EventLoop.check(EventLoop.java:33)
        at org.lwjgl.glfw.GLFW.glfwInit(GLFW.java:1078)
        at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.initializeGlfw(Lwjgl3Application.java:89)
        at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.<init>(Lwjgl3Application.java:139)
        at core.game.GameLoop.run(GameLoop.java:105)
        at core.Game.run(Game.java:58)
        at starter.RoomBasedDungeon.main(RoomBasedDungeon.java:34)

Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.

Das Schräge dabei ist, dass der Schalter ja extra im Task drin ist und bei der Vorgängerversion noch funktioniert hat.

@cagix
Copy link
Member

cagix commented Dec 19, 2023

@AMatutat Hast Du auch das Problem auf Deiner Maschine oder bin ich nur zu blöd? IntelliJ versteckt ja auch nochmal die JDK-Version für das Projekt (die hatte ich manuell hochgezogen).

@cagix
Copy link
Member

cagix commented Dec 19, 2023

@fwatermann Bitte ersetze im build.gradle alle Vorkommen von "allJvmArgs" mit "jvmArgs"!

Lt. https://docs.gradle.org/current/dsl/org.gradle.api.tasks.compile.ForkOptions.html ist allJvmArgs read-only und "incubating" - während. man mit jvmArgs zusätzliche Argumente setzen kann.

Mit "jvmArgs" läuft es bei mir.

@AMatutat Kannst Du das bitte auch nochmal kurz testen/bestätigen? Dabei bitte aufpassen, dass wirklich JDK21 genommen wird ("./gradlew --version" muss was mit "JVM: 21.0.1 ..." rauswerfen ... bzw. IJ muss in den Projekteinstellungen extra überzeugt werden.

Edit: Spannend, ich hatte nur nach allJvmArgs gesucht, und die Hilfeseite hat zwar mit dem Compile zu tun, ist aber eigentlich nicht die gesuchte. Die "richtige" Seite zum "JavaExec" (https://docs.gradle.org/current/dsl/org.gradle.api.tasks.JavaExec.html#org.gradle.api.tasks.JavaExec:allJvmArgs) hat den Zusatz "read-only" und "incubating" bei allJvmArgs nicht.

Edit: Na gut, so ganz falsch war die erste Seite dann doch nicht - "JavaExec" implementiert "JavaForkOptions". Gradle gefällt mir immer besser 🤮

Edit: Noch besser gefällt mir der Methodenaufruf: jvmArgs("-XstartOnFirstThread") statt jvmArgs += ["-XstartOnFirstThread"].

build.gradle Outdated Show resolved Hide resolved
@fwatermann
Copy link
Contributor Author

@cagix
Spotless wird aufgrund der Versionsänderung nicht durchlaufen. Ist jetzt die Frage, ob ich die Reformatierung hier mit reinpacke, oder ob wir Spotless jetzt einmal ignorieren, wobei dann JUnit nicht läuft anscheinend.

@cagix
Copy link
Member

cagix commented Dec 22, 2023

wieviel änderung an der formatierung würde sich allein durch die neue spotless-version ergeben?

ich denke, die version sollten wir hier machen, und die sich daraus ergebenden formatierungen auch. den switch auf google-format sollten wir nach wie vor in einem separaten pr machen.

was hat das grad mit junit auf sich? nur die version hochziehen sollte doch eigentlich die tests nicht kaputt machen?

@fwatermann
Copy link
Contributor Author

fwatermann commented Dec 22, 2023

was hat das grad mit junit auf sich? nur die version hochziehen sollte doch eigentlich die tests nicht kaputt machen?

Ich hab PowerMock durch die Mockito-Core der aktuellsten Version ersetzt. Aber vor dem Tausch, liefen bei mir einige Tests auch schon nicht. Vermutlich weil Java 21 🤷‍♂️

@cagix
Copy link
Member

cagix commented Dec 26, 2023

@fwatermann was ist denn hier der stand? von mir ist noch ein kommentar offen(?), die bemerkung zum schalter für macos ist nicht komplett umgesetzt? und was ist jetzt mit den tests, laufen die wieder?

@fwatermann
Copy link
Contributor Author

@fwatermann was ist denn hier der stand? von mir ist noch ein kommentar offen(?), die bemerkung zum schalter für macos ist nicht komplett umgesetzt? und was ist jetzt mit den tests, laufen die wieder?

Die Tests laufen wieder. Den MacOS-Schalter mach ich gerade fertig, hab dein Edit nicht gesehen.

@cagix
Copy link
Member

cagix commented Dec 29, 2023

@fwatermann danke! was ich eigentlich meinte war die diskussion #1313 (review) ist noch offen ...

wenn ich das richtig sehe, hast du das quasi erledigt, zumindest gibt es jetzt einen entsprechenden eintrag ganz oben in zeile 12..17. aber damit ist zeile 63 jetzt obsolet und sollte komplett gelöscht werden, oder? dann kann auch die diskussion "resolved" werden.

build.gradle Outdated Show resolved Hide resolved
build.gradle Outdated Show resolved Hide resolved
Copy link
Member

@cagix cagix left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

noch ein paar aktualisierungen, wo wir schon mal dabei sind

build.gradle Outdated Show resolved Hide resolved
build.gradle Outdated Show resolved Hide resolved
build.gradle Show resolved Hide resolved
build.gradle Outdated Show resolved Hide resolved
@cagix
Copy link
Member

cagix commented Dec 29, 2023

hmmm, checkstyle fehlt jetzt was?

@fwatermann
Copy link
Contributor Author

hmmm, checkstyle fehlt jetzt was?

Da scheint es compatiblitätsprobleme zu geben. Mit 10.11.0 läufts 🤷‍♂️

@cagix
Copy link
Member

cagix commented Dec 29, 2023

@fwatermann probier mal bitte noch https://mvnrepository.com/artifact/com.puppycrawl.tools/checkstyle/10.12.6 in die gradle-config einzubauen

@cagix
Copy link
Member

cagix commented Dec 29, 2023

hmmm, checkstyle fehlt jetzt was?

Da scheint es compatiblitätsprobleme zu geben. Mit 10.11.0 läufts 🤷‍♂️

irgendwie scheint das ding zwei libs nicht auflösen zu können? sollte das nicht automatisch rekursiv erfolgen? ich glaube nicht, dass wir dieses guava-zeugs direkt ziehen? oder kommt das über doe json-lib (von @AMatutat eingebaut) mit rein und beisst sich dann?

@cagix
Copy link
Member

cagix commented Dec 29, 2023

so langsam habe ich echt immer weniger lust auf dieses projekt :( ...

@AMatutat wieso werden für checkstyle die regeln extra konfiguriert im build.gradle, aber die suppression-regeln liegen dann wieder im default-config-ordner? warum ist das nicht einheitlich?

Copy link
Member

@cagix cagix left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

build.gradle Outdated Show resolved Hide resolved
@cagix
Copy link
Member

cagix commented Jan 2, 2024

hmmmpf. checkstyle ist echt toll 💩🤮

tun so, als ob sie das mit v10.12.7 fixen, aber dabei ist das problem immer noch akut: checkstyle/checkstyle#14211 😤

@cagix
Copy link
Member

cagix commented Jan 2, 2024

Entscheidung 02.01.24: Wir setzen hier erstmal die alte Checkstyle-Version wieder ein, damit der PR zugeht. Parallel ein Ticket, um Checkstyle rauszuwerfen: #1316

Copy link
Member

@cagix cagix left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm (see #1316)

@cagix cagix merged commit 0b8510f into master Jan 2, 2024
10 checks passed
@cagix cagix deleted the fw/gradle_update_8.5 branch January 2, 2024 09:19
@AMatutat
Copy link
Contributor

AMatutat commented Jan 2, 2024

so langsam habe ich echt immer weniger lust auf dieses projekt :( ...

@AMatutat wieso werden für checkstyle die regeln extra konfiguriert im build.gradle, aber die suppression-regeln liegen dann wieder im default-config-ordner? warum ist das nicht einheitlich?

Historisch gewachsen. Den Basic-Setup haben wir damals aus dem ersten Dungeon Projekt mitgenommen und da wir nie wirklich glücklich mit unserer Checkstyle-Config (und irgendwie auch unsere Projektstruktur) waren, hat sich das schlichtweg keiner angeschaut. Das gesamte Build-Zeugs ist eher on the fly zusammengesteckt als wirklich konzeptioniert.

@cagix
Copy link
Member

cagix commented Jan 2, 2024

so langsam habe ich echt immer weniger lust auf dieses projekt :( ...
@AMatutat wieso werden für checkstyle die regeln extra konfiguriert im build.gradle, aber die suppression-regeln liegen dann wieder im default-config-ordner? warum ist das nicht einheitlich?

Historisch gewachsen. Den Basic-Setup haben wir damals aus dem ersten Dungeon Projekt mitgenommen und da wir nie wirklich glücklich mit unserer Checkstyle-Config (und irgendwie auch unsere Projektstruktur) waren, hat sich das schlichtweg keiner angeschaut. Das gesamte Build-Zeugs ist eher on the fly zusammengesteckt als wirklich konzeptioniert.

@AMatutat Hihi ... so sieht das auch aus. Naja, wenn ich dazu komme, gehe ich da mal mit ner großen Forke drüber ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Projekt] Versionen der Tools und Libs hochziehen [Dungeon] Update auf Java 21 LTS
3 participants