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

Auflistung der Dependencies samt Lizenz #1487

Draft
wants to merge 11 commits into
base: master
Choose a base branch
from
Draft

Conversation

tgrothe
Copy link
Contributor

@tgrothe tgrothe commented Apr 10, 2024

Dieser PR fügt beim Generieren der Starter.jar einen Lizenz-Report zum .jar-File hinzu.

closes #1478

modified:   build.gradle
modified:   dependencies.gradle
new file:   license-report-example.md
@tgrothe
Copy link
Contributor Author

tgrothe commented Apr 10, 2024

@cagix wie versprochen, schon einmal der pull-request.

@cagix
Copy link
Member

cagix commented Apr 10, 2024

@tgrothe 🙏

wow, der findet aber echt viel 🫣

kann man das so einstellen, dass er nur die runtime-sachen findet, also die sachen, die auch ins jar gehen?

@tgrothe
Copy link
Contributor Author

tgrothe commented Apr 10, 2024

kann man das so einstellen, dass er nur die runtime-sachen findet, also die sachen, die auch ins jar gehen?

hm, ich lese mir mal die plugin docs dazu durch, dauert aber ein wenig.

@cagix
Copy link
Member

cagix commented Apr 10, 2024

kann man das so einstellen, dass er nur die runtime-sachen findet, also die sachen, die auch ins jar gehen?

hm, ich lese mir mal die plugin docs dazu durch, dauert aber ein wenig.

keinen stress, das läuft ja nicht weg ...

modified:   .gitignore
modified:   build.gradle
renamed:    license-report-example.md -> licenses/third-party-libs.md
@tgrothe
Copy link
Contributor Author

tgrothe commented Apr 12, 2024

@tgrothe 🙏

wow, der findet aber echt viel 🫣

kann man das so einstellen, dass er nur die runtime-sachen findet, also die sachen, die auch ins jar gehen?

schau dir das nun einmal an, es war schon auf "runtime libs" mit configurations = ['runtimeClasspath'] eingestellt ...

@cagix
Copy link
Member

cagix commented Apr 13, 2024

was genau sehe ich jetzt?

@tgrothe
Copy link
Contributor Author

tgrothe commented Apr 13, 2024

was genau sehe ich jetzt?

Die Ausgabe ist im Prinzip gleich belieben. Aber ich habe die default Konfigurationsoptionen hinzugefügt. Die Konfiguration war schon auf 'runtimeClasspath' eingestellt, das heißt, das sollten eigentlich bereits schon nur die Abhängigkeiten sein, die auch in der jar sind?

@cagix
Copy link
Member

cagix commented Apr 13, 2024

d.h. es gibt eigentlich nichts für mich zu sehen.

wenn du die übersicht anschaust, dann taucht dort junit auf. das sollte aber nichts mit dem jar-file zu tun haben.

@tgrothe
Copy link
Contributor Author

tgrothe commented Apr 13, 2024

d.h. es gibt eigentlich nichts für mich zu sehen.

wenn du die übersicht anschaust, dann taucht dort junit auf. das sollte aber nichts mit dem jar-file zu tun haben.

man kann glaube ich auch bestimmte dependencies aus- oder einschließen, mit:

    excludeGroups = ['do.not.want']

    excludes = ['moduleGroup:moduleName']

    excludeOwnGroup = true

    excludeBoms = false

wobei ich nicht weiß, was mit "bom" gemeint ist.

@cagix
Copy link
Member

cagix commented Apr 13, 2024

bill of materials

@tgrothe
Copy link
Contributor Author

tgrothe commented Apr 13, 2024

bill of materials

jedenfalls, auch wenn man excludeBoms auf true setzt, ändert sich an der ausgabe nix.

@cagix
Copy link
Member

cagix commented Apr 14, 2024

@tgrothe naja, es kann mehrere ursachen geben:

  1. unsere Konfiguration des Plugins ist noch nicht korrekt
  2. das Plugin hat einen Bug
  3. unsere Gradle-Konfiguration stimmt nicht

(1) was ändert sich, wenn du unionParentPomLicenses aktivierst? wobei hier false schon der eingeschränkte wert zu sein scheint?!

(2) gibt es im bug-tracker vom plugin irgendwelche hinweise? gibt es auf stackoverflow irgendwelche hinweise?

(3) wie haben wir junit bei uns eingebunden, ist das am ende tatsächlich im starter.jar drin?

@tgrothe
Copy link
Contributor Author

tgrothe commented Apr 14, 2024

@tgrothe naja, es kann mehrere ursachen geben:

1. unsere Konfiguration des Plugins ist noch nicht korrekt

2. das Plugin hat einen Bug

3. unsere Gradle-Konfiguration stimmt nicht

(1) was ändert sich, wenn du unionParentPomLicenses aktivierst? wobei hier false schon der eingeschränkte wert zu sein scheint?!

Keine Änderung:

$ git diff -U1
diff --git a/build.gradle b/build.gradle
index f765be1e..ecb2e047 100644
--- a/build.gradle
+++ b/build.gradle
@@ -59,3 +59,3 @@ licenseReport {
     // Defaults to: true
-    unionParentPomLicenses = false
+    unionParentPomLicenses = true

diff --git a/licenses/third-party-libs.md b/licenses/third-party-libs.md
index 9fc2efb6..748937d7 100644
--- a/licenses/third-party-libs.md
+++ b/licenses/third-party-libs.md
@@ -3,3 +3,3 @@
 ## Dependency License Report
-_2024-04-12 21:29:48 MESZ_
+_2024-04-14 14:11:24 MESZ_
 ## Apache License, Version 2.0

(2) gibt es im bug-tracker vom plugin irgendwelche hinweise? gibt es auf stackoverflow irgendwelche hinweise?

Mit configurations = ['compileClasspath'] entfällt lediglich Punkt 3:

$ git diff -U1
diff --git a/build.gradle b/build.gradle
index f765be1e..33e04571 100644
--- a/build.gradle
+++ b/build.gradle
@@ -73,3 +73,3 @@ licenseReport {
     // configurations = ALL
-    configurations = ['runtimeClasspath']
+    configurations = ['compileClasspath']
 
diff --git a/licenses/third-party-libs.md b/licenses/third-party-libs.md
index 9fc2efb6..0fb9a448 100644
--- a/licenses/third-party-libs.md
+++ b/licenses/third-party-libs.md
@@ -3,3 +3,3 @@
 ## Dependency License Report
-_2024-04-12 21:29:48 MESZ_
+_2024-04-14 14:19:04 MESZ_
 ## Apache License, Version 2.0
@@ -16,10 +16,5 @@ _2024-04-12 21:29:48 MESZ_
 
-**3** **Group:** `org.objenesis` **Name:** `objenesis` **Version:** `3.3` 
-> - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0.txt](http://www.apache.org/licenses/LICENSE-2.0.txt)
-> - **Embedded license files**: [objenesis-3.3.jar/META-INF/LICENSE](objenesis-3.3.jar/META-INF/LICENSE) 
-    - [objenesis-3.3.jar/META-INF/NOTICE](objenesis-3.3.jar/META-INF/NOTICE)
-
 ## Apache-2.0
[...]

Zu JUnit (4) und dem license plugin hab ich nix in der Plugin-Beschreibung und auf Stack Overflow gefunden. Es gibt aber ein Issue dazu, dass JUnit 5 nicht im Report enthalten war: jk1/Gradle-License-Report#201 , also quasi der genau umgedrehte Fall.

(3) wie haben wir junit bei uns eingebunden, ist das am ende tatsächlich im starter.jar drin?

Ja, das und Mockito ist mit in der Starter.jar enthalten:

$ find . -name "*junit*"
./junit
./LICENSE-junit.txt
./org/junit
./org/mockito/exceptions/verification/junit
./org/mockito/internal/junit
./org/mockito/junit

Wir könnten versuchen, die dependencies oder den jar task anzupassen, dass JUnit nicht mehr mit "eingepackt" wird.

…er.jar and licenses report:

modified:   build.gradle
modified:   game/build.gradle
modified:   licenses/third-party-libs.md
@cagix
Copy link
Member

cagix commented Apr 14, 2024

(3) wie haben wir junit bei uns eingebunden, ist das am ende tatsächlich im starter.jar drin?
Ja, das und Mockito ist mit in der Starter.jar enthalten:

F*ck. Dann ist unsere Gradle-Konfiguration tatsächlich noch kaputt. JUnit/Mockito haben im Starter.jar nix zu suchen 👀

@tgrothe
Copy link
Contributor Author

tgrothe commented Apr 14, 2024

(3) wie haben wir junit bei uns eingebunden, ist das am ende tatsächlich im starter.jar drin?
Ja, das und Mockito ist mit in der Starter.jar enthalten:

F*ck. Dann ist unsere Gradle-Konfiguration tatsächlich noch kaputt. JUnit/Mockito haben im Starter.jar nix zu suchen 👀

Mit ccc14bc sollte es jetzt eigentlich passen. JUnit/Mockito sollten hinterher nicht mehr in der jar sein und tauchen jetzt auch nicht mehr im Report auf. :)

@cagix
Copy link
Member

cagix commented Apr 14, 2024

@tgrothe

(3) wie haben wir junit bei uns eingebunden, ist das am ende tatsächlich im starter.jar drin?
Ja, das und Mockito ist mit in der Starter.jar enthalten:

F*ck. Dann ist unsere Gradle-Konfiguration tatsächlich noch kaputt. JUnit/Mockito haben im Starter.jar nix zu suchen 👀

Mit ccc14bc sollte es jetzt eigentlich passen. JUnit/Mockito sollten hinterher nicht mehr in der jar sein und tauchen jetzt auch nicht mehr im Report auf. :)

zum lokalen testen ist das ok - aber das gehört in einen eigenen pr. das ist etwas, was ich sehen will und ggf. zurückdrehen möchte, also nix, was ich in einem feature-pr einfach mal so nebenbei mache/verstecke. die diskussion hatten wir nun schon ein paar mal.

edit: sorry, ich habe vorhin versehentlich deinen kommentar editiert, statt ein "quote-reply" zu machen :/

@tgrothe
Copy link
Contributor Author

tgrothe commented Apr 14, 2024

@tgrothe

(3) wie haben wir junit bei uns eingebunden, ist das am ende tatsächlich im starter.jar drin?
Ja, das und Mockito ist mit in der Starter.jar enthalten:

F*ck. Dann ist unsere Gradle-Konfiguration tatsächlich noch kaputt. JUnit/Mockito haben im Starter.jar nix zu suchen 👀

Mit ccc14bc sollte es jetzt eigentlich passen. JUnit/Mockito sollten hinterher nicht mehr in der jar sein und tauchen jetzt auch nicht mehr im Report auf. :)

zum lokalen testen ist das ok - aber das gehört in einen eigenen pr. das ist etwas, was ich sehen will und ggf. zurückdrehen möchte, also nix, was ich in einem feature-pr einfach mal so nebenbei mache/verstecke. die diskussion hatten wir nun schon ein paar mal.

edit: sorry, ich habe vorhin versehentlich deinen kommentar editiert, statt ein "quote-reply" zu machen :/

Aber dieser PR steht doch noch auf Draft. Ich kann später einen neuen Feature-Pull-Request öffnen, der dann zuerst gemerged werden sollte, wenn das ok wäre?

.gitignore Outdated Show resolved Hide resolved
@cagix
Copy link
Member

cagix commented Apr 14, 2024

@tgrothe

(3) wie haben wir junit bei uns eingebunden, ist das am ende tatsächlich im starter.jar drin?

Ja, das und Mockito ist mit in der Starter.jar enthalten:

F*ck. Dann ist unsere Gradle-Konfiguration tatsächlich noch kaputt. JUnit/Mockito haben im Starter.jar nix zu suchen 👀

Mit ccc14bc sollte es jetzt eigentlich passen. JUnit/Mockito sollten hinterher nicht mehr in der jar sein und tauchen jetzt auch nicht mehr im Report auf. :)

zum lokalen testen ist das ok - aber das gehört in einen eigenen pr. das ist etwas, was ich sehen will und ggf. zurückdrehen möchte, also nix, was ich in einem feature-pr einfach mal so nebenbei mache/verstecke. die diskussion hatten wir nun schon ein paar mal.

edit: sorry, ich habe vorhin versehentlich deinen kommentar editiert, statt ein "quote-reply" zu machen :/

Aber dieser PR steht doch noch auf Draft. Ich kann später einen neuen Feature-Pull-Request öffnen, der dann zuerst gemerged werden sollte, wenn das ok wäre?

draft: ich sag ja, zum ausprobieren finde ich es ok. nur will ich so eine änderung nicht am ende hier in diesem pr haben :)

und ja, den anderen pr müsste man dann vor diesem hier mergen...

ich frage mich grad, warum ich junit damals in die game-build.gradle und dann noch als "api" gepackt hatte 🫣 ... ich kann mich nur erinnern, dass es mit dem üblichen "testImpl" irgendwie probleme gab. hmmm.

@tgrothe
Copy link
Contributor Author

tgrothe commented Apr 14, 2024

@tgrothe

(3) wie haben wir junit bei uns eingebunden, ist das am ende tatsächlich im starter.jar drin?

Ja, das und Mockito ist mit in der Starter.jar enthalten:

F*ck. Dann ist unsere Gradle-Konfiguration tatsächlich noch kaputt. JUnit/Mockito haben im Starter.jar nix zu suchen 👀

Mit ccc14bc sollte es jetzt eigentlich passen. JUnit/Mockito sollten hinterher nicht mehr in der jar sein und tauchen jetzt auch nicht mehr im Report auf. :)

zum lokalen testen ist das ok - aber das gehört in einen eigenen pr. das ist etwas, was ich sehen will und ggf. zurückdrehen möchte, also nix, was ich in einem feature-pr einfach mal so nebenbei mache/verstecke. die diskussion hatten wir nun schon ein paar mal.

edit: sorry, ich habe vorhin versehentlich deinen kommentar editiert, statt ein "quote-reply" zu machen :/

Aber dieser PR steht doch noch auf Draft. Ich kann später einen neuen Feature-Pull-Request öffnen, der dann zuerst gemerged werden sollte, wenn das ok wäre?

draft: ich sag ja, zum ausprobieren finde ich es ok. nur will ich so eine änderung nicht am ende hier in diesem pr haben :)

und ja, den anderen pr müsste man dann vor diesem hier mergen...

ich frage mich grad, warum ich junit damals in die game-build.gradle und dann noch als "api" gepackt hatte 🫣 ... ich kann mich nur erinnern, dass es mit dem üblichen "testImpl" irgendwie probleme gab. hmmm.

Das ist wieder so ein Gradle-Doc-Kuddelmuddel. Das testImplementation habe ich weder ein der Doku von Gradle gefunden noch auf Stack Overflow ... dort stand immer nur: testCompile nehmen, aber das scheint inzwischen outdated zu sein? Wies auch sei, testImplementation habe ich durch Probieren herausgefunden und es funktioniert und IntelliJ hat auch nicht gemeckert.

api zieht alles überall jederzeit mit ... also das, was man für Tests-Libs nicht möchte.

@tgrothe
Copy link
Contributor Author

tgrothe commented Apr 15, 2024

hmmm, ist nicht testImpl die obermenge von testCompile? also testCompile ist wirklich nur compilieren der test, aber testImpl schließt das ein und erlaubt ausführen der tests?

testCompile ist in der top level gradle build leider net erlaubt, offenbar ...

@cagix
Copy link
Member

cagix commented Apr 16, 2024

hmmm, ist nicht testImpl die obermenge von testCompile? also testCompile ist wirklich nur compilieren der test, aber testImpl schließt das ein und erlaubt ausführen der tests?

testCompile ist in der top level gradle build leider net erlaubt, offenbar ...

hmm, aber da wir ja eh testImpl brauchen, ist das doch kein problem?

@tgrothe
Copy link
Contributor Author

tgrothe commented Apr 16, 2024

hmmm, ist nicht testImpl die obermenge von testCompile? also testCompile ist wirklich nur compilieren der test, aber testImpl schließt das ein und erlaubt ausführen der tests?

testCompile ist in der top level gradle build leider net erlaubt, offenbar ...

hmm, aber da wir ja eh testImpl brauchen, ist das doch kein problem?

nein, kein problem ... :) Potest manere quod est. :D

cagix added a commit that referenced this pull request Apr 29, 2024
Die Testabhängigkeiten wurden bislang im `build.gradle` von Sub-Projekt
`game` als `api` definiert, um transitiv auch in `dungeon` etc.
verfügbar zu sein und dort nicht noch einmal konfiguriert werden zu
müssen.

Dadurch landen die JUnit- und Mockito-Bibliotheken aber unnötig im
`Starter.jar` für den Dungeon (Probleme: Größe des JARs, Lizenzen der
eingepackten Bibliotheken). (siehe auch Diskussion in #1487)

Zusätzlich haben bisher nur zwei der Sub-Projekte auch wirklich Tests:
`game` und `dungeon`, die anderen benötigen die JUnit- und
Mockito-Abhängigkeiten nicht.



Dieser PR korrigiert dies: 
- Setze die Konfiguration für die Test-Dependencies auf
`testImplementation`, damit die JUnit- und Mockito-Abhängigkeiten nicht
im JAR landen (vgl.
https://docs.gradle.org/current/userguide/java_plugin.html#sec:java_plugin_and_dependency_management)
- Füge Dependencies für JUnit und Mockito auch in die lokale
`build.gradle` des Sub-Projekts `dungeon` ein

---------

Co-authored-by: Carsten Gips <cagix@hsbi.de>
@tgrothe
Copy link
Contributor Author

tgrothe commented Apr 30, 2024

@cagix ich würde hier gerne weitermachen.

soll der (beispiel-) license report eingecheckt werden? soll dieser von der ci generiert werden? wenn ja, wann? immer, wenn sich eine gradle build ändert?

also, neuer pull request && änderung an einer build.gradle -> neuer report?

@cagix
Copy link
Member

cagix commented Apr 30, 2024

soll der (beispiel-) license report eingecheckt werden? soll dieser von der ci generiert werden? wenn ja, wann? immer, wenn sich eine gradle build ändert?

also, neuer pull request && änderung an einer build.gradle -> neuer report?

wirklich brauchen tun wir das hier in diesem repo nicht. das wird erst relevant, wenn wir ein fertiges artefakt irgendwo anbieten, welches bibliotheken von drittanbietern (physisch) enthält => starter.jar bzw. das starter-repo (siehe beschreibung in #1478).

oder andersherum: der bericht plus die lizenzfiles sollten immer zusammen mit dem starter.jar erzeugt/zusammengesammelt werden, aber nicht hier in diesem repo eingecheckt werden. das muss man dann beim rüberkopieren des starter.jar in das starter-repo entsprechend mit kopieren und dort einchecken.

zusätzlich sollte das starter.jar den bericht und die lizenzfiles mit enthalten (sicherheitshalber).

@cagix cagix removed their assignment Apr 30, 2024
@tgrothe
Copy link
Contributor Author

tgrothe commented Apr 30, 2024

soll der (beispiel-) license report eingecheckt werden? soll dieser von der ci generiert werden? wenn ja, wann? immer, wenn sich eine gradle build ändert?
also, neuer pull request && änderung an einer build.gradle -> neuer report?

wirklich brauchen tun wir das hier in diesem repo nicht. das wird erst relevant, wenn wir ein fertiges artefakt irgendwo anbieten, welches bibliotheken von drittanbietern (physisch) enthält => starter.jar bzw. das starter-repo (siehe beschreibung in #1478).

oder andersherum: der bericht plus die lizenzfiles sollten immer zusammen mit dem starter.jar erzeugt/zusammengesammelt werden, aber nicht hier in diesem repo eingecheckt werden. das muss man dann beim rüberkopieren des starter.jar in das starter-repo entsprechend mit kopieren und dort einchecken.

zusätzlich sollte das starter.jar den bericht und die lizenzfiles mit enhalten (sicherheitshalber).

alles klar, dann ist aus meiner sicht hier zurzeit nix zun tun.

die starter.jar generieren wir ja manuell bzw. über einen gradle task. ...

ich füge mal das later label hinzu.

@tgrothe tgrothe added the later not now, maybe later label Apr 30, 2024
@cagix
Copy link
Member

cagix commented Apr 30, 2024

soll der (beispiel-) license report eingecheckt werden? soll dieser von der ci generiert werden? wenn ja, wann? immer, wenn sich eine gradle build ändert?
also, neuer pull request && änderung an einer build.gradle -> neuer report?

wirklich brauchen tun wir das hier in diesem repo nicht. das wird erst relevant, wenn wir ein fertiges artefakt irgendwo anbieten, welches bibliotheken von drittanbietern (physisch) enthält => starter.jar bzw. das starter-repo (siehe beschreibung in #1478).
oder andersherum: der bericht plus die lizenzfiles sollten immer zusammen mit dem starter.jar erzeugt/zusammengesammelt werden, aber nicht hier in diesem repo eingecheckt werden. das muss man dann beim rüberkopieren des starter.jar in das starter-repo entsprechend mit kopieren und dort einchecken.
zusätzlich sollte das starter.jar den bericht und die lizenzfiles mit enhalten (sicherheitshalber).

alles klar, dann ist aus meiner sicht hier zurzeit nix zun tun.

die starter.jar generieren wir ja manuell bzw. über einen gradle task. ...

ich füge mal das later label hinzu.

@tgrothe ich verstehe dich grad nicht. ist denn das problem gelöst? wenn ja, worin besteht die lösung? wenn nein, was soll "later" passieren, was nicht bereits auch jetzt passieren kann?

@tgrothe
Copy link
Contributor Author

tgrothe commented Apr 30, 2024

soll der (beispiel-) license report eingecheckt werden? soll dieser von der ci generiert werden? wenn ja, wann? immer, wenn sich eine gradle build ändert?
also, neuer pull request && änderung an einer build.gradle -> neuer report?

wirklich brauchen tun wir das hier in diesem repo nicht. das wird erst relevant, wenn wir ein fertiges artefakt irgendwo anbieten, welches bibliotheken von drittanbietern (physisch) enthält => starter.jar bzw. das starter-repo (siehe beschreibung in #1478).
oder andersherum: der bericht plus die lizenzfiles sollten immer zusammen mit dem starter.jar erzeugt/zusammengesammelt werden, aber nicht hier in diesem repo eingecheckt werden. das muss man dann beim rüberkopieren des starter.jar in das starter-repo entsprechend mit kopieren und dort einchecken.
zusätzlich sollte das starter.jar den bericht und die lizenzfiles mit enhalten (sicherheitshalber).

alles klar, dann ist aus meiner sicht hier zurzeit nix zun tun.
die starter.jar generieren wir ja manuell bzw. über einen gradle task. ...
ich füge mal das later label hinzu.

@tgrothe ich verstehe dich grad nicht. ist denn das problem gelöst? wenn ja, worin besteht die lösung? wenn nein, was soll "later" passieren, was nicht bereits auch jetzt passieren kann?

ich weiß momentan nicht, was hier noch zu tun wäre. der bericht kann ja (zurzeit manuell) erstellt werden. soll dieser automatisch in die jar gelegt werden, wenn der starter jar tasks angestoßen wird?

@cagix
Copy link
Member

cagix commented Apr 30, 2024

soll der (beispiel-) license report eingecheckt werden? soll dieser von der ci generiert werden? wenn ja, wann? immer, wenn sich eine gradle build ändert?
also, neuer pull request && änderung an einer build.gradle -> neuer report?

wirklich brauchen tun wir das hier in diesem repo nicht. das wird erst relevant, wenn wir ein fertiges artefakt irgendwo anbieten, welches bibliotheken von drittanbietern (physisch) enthält => starter.jar bzw. das starter-repo (siehe beschreibung in #1478).
oder andersherum: der bericht plus die lizenzfiles sollten immer zusammen mit dem starter.jar erzeugt/zusammengesammelt werden, aber nicht hier in diesem repo eingecheckt werden. das muss man dann beim rüberkopieren des starter.jar in das starter-repo entsprechend mit kopieren und dort einchecken.
zusätzlich sollte das starter.jar den bericht und die lizenzfiles mit enhalten (sicherheitshalber).

alles klar, dann ist aus meiner sicht hier zurzeit nix zun tun.
die starter.jar generieren wir ja manuell bzw. über einen gradle task. ...
ich füge mal das later label hinzu.

@tgrothe ich verstehe dich grad nicht. ist denn das problem gelöst? wenn ja, worin besteht die lösung? wenn nein, was soll "later" passieren, was nicht bereits auch jetzt passieren kann?

ich weiß momentan nicht, was hier noch zu tun wäre. der bericht kann ja (zurzeit manuell) erstellt werden. soll dieser automatisch in die jar gelegt werden, wenn der starter jar tasks angestoßen wird?

@tgrothe ich glaube, das ist exakt das, was ich im kommentar obendrüber dazu geschrieben hatte?!

@cagix
Copy link
Member

cagix commented Apr 30, 2024

soll der (beispiel-) license report eingecheckt werden? soll dieser von der ci generiert werden? wenn ja, wann? immer, wenn sich eine gradle build ändert?
also, neuer pull request && änderung an einer build.gradle -> neuer report?

wirklich brauchen tun wir das hier in diesem repo nicht. das wird erst relevant, wenn wir ein fertiges artefakt irgendwo anbieten, welches bibliotheken von drittanbietern (physisch) enthält => starter.jar bzw. das starter-repo (siehe beschreibung in #1478).
oder andersherum: der bericht plus die lizenzfiles sollten immer zusammen mit dem starter.jar erzeugt/zusammengesammelt werden, aber nicht hier in diesem repo eingecheckt werden. das muss man dann beim rüberkopieren des starter.jar in das starter-repo entsprechend mit kopieren und dort einchecken.
zusätzlich sollte das starter.jar den bericht und die lizenzfiles mit enhalten (sicherheitshalber).

alles klar, dann ist aus meiner sicht hier zurzeit nix zun tun.
die starter.jar generieren wir ja manuell bzw. über einen gradle task. ...
ich füge mal das later label hinzu.

@tgrothe ich verstehe dich grad nicht. ist denn das problem gelöst? wenn ja, worin besteht die lösung? wenn nein, was soll "later" passieren, was nicht bereits auch jetzt passieren kann?

ich weiß momentan nicht, was hier noch zu tun wäre. der bericht kann ja (zurzeit manuell) erstellt werden. soll dieser automatisch in die jar gelegt werden, wenn der starter jar tasks angestoßen wird?

@tgrothe ich glaube, das ist exakt das, was ich im kommentar obendrüber dazu geschrieben hatte?!

oh, und dann wie immer: bitte eine vernünftige beschreibung dessen, was hier passiert, in den ersten kommentar packen.

@tgrothe tgrothe removed the later not now, maybe later label Apr 30, 2024
@tgrothe
Copy link
Contributor Author

tgrothe commented Apr 30, 2024

ok, ich bin hier dran, aber es dauert noch etwas.

das plugin verwendet anscheinend den gradle cache und erstellt nicht jedes mal den report. deshalb muss der gradle cache geleert werden. hab später wieder zeit hierfür. gradle ist merkwürdig.

@cagix
Copy link
Member

cagix commented Apr 30, 2024

gradle ist merkwürdig.

🤣

modified:   build.gradle
modified:   dungeon/build.gradle
@tgrothe tgrothe marked this pull request as ready for review April 30, 2024 16:01
@tgrothe tgrothe requested a review from cagix April 30, 2024 16:01
dungeon/build.gradle Outdated Show resolved Hide resolved
modified:   dungeon/build.gradle

Examples added:

new file:   1.md
new file:   2.md
new file:   3.md
new file:   4.md
new file:   5.md
new file:   6.md
new file:   7.md
new file:   8.md
new file:   9_current.md
deleted:    1.md
deleted:    2.md
deleted:    3.md
deleted:    4.md
deleted:    5.md
deleted:    6.md
deleted:    7.md
deleted:    8.md
deleted:    9_current.md
@cagix
Copy link
Member

cagix commented May 2, 2024

@tgrothe Danke. Hast Du mal geschaut, ob das wirklich alle Libs sind, die im JAR landen? Also fehlt da noch was? Oder findet das Plugin irgendwas zu viel?

wobei die game dependencies eine teilmenge der dungeon sind.

An sich müsste ja als "dungeon" reichen, da vom Classpath her dort auch alles aus "game" gezogen wird.

Wenn ich das richtig sehe, möchten Apache und BSD den Lizenztext auch vorgehalten haben. Also nicht nur eine Datei mit dem Namen und dem Link drin, sondern auch den konkreten Text. Kriegen wir das irgendwie hin?

@tgrothe
Copy link
Contributor Author

tgrothe commented May 2, 2024

Wenn ich das richtig sehe, möchten Apache und BSD den Lizenztext auch vorgehalten haben. Also nicht nur eine Datei mit dem Namen und dem Link drin, sondern auch den konkreten Text. Kriegen wir das irgendwie hin?

So auf die Schnelle ... ich glaube net.

Include a copy of the Apache License, typically in a file called LICENSE, in your work, and consider also including a NOTICE file that references the License.

See https://www.apache.org/licenses/LICENSE-2.0

Also eine Lizenzdatei hätten wir, und in dieser ist doch auch eine Referenz/ein Link enthalten ...

Hast Du mal geschaut, ob das wirklich alle Libs sind, die im JAR landen? Also fehlt da noch was? Oder findet das Plugin irgendwas zu viel?

Ich glaube, es ist alles dabei und landet im jar. Ich kann aber nur vermuten, dass das stimmt. 75 % 🤪

@cagix
Copy link
Member

cagix commented May 2, 2024

Wenn ich das richtig sehe, möchten Apache und BSD den Lizenztext auch vorgehalten haben. Also nicht nur eine Datei mit dem Namen und dem Link drin, sondern auch den konkreten Text. Kriegen wir das irgendwie hin?

So auf die Schnelle ... ich glaube net.

Muss ja nicht schnell sein. Aber es muss - wenn ich auf die Lizenz klicke, steht da unter (4a) eindeutig, dass man eine Kopie der Lizenz mit verteilen muss. Und (4d) will dann darüber hinaus noch irgendwelche "Notice"-Files sehen (sofern es im ursprünglichen Projekt welche gibt) - hier ist mir aber nicht klar, ob sich das auch auf das Verteilen von Binärklumpen bezieht oder nur, wenn Du die Sourcen nochmal auslieferst.

Edit: Vielleicht lässt sich das in Groovy/Gradle halbwegs vernünftig ausdrücken und damit automatisieren. Vielleicht kann das Plugin das aber auch schon, anderen geht es ja genau wie uns. Und es reicht, hier zunächst mal ne grobe Skizze zu machen - damit kann ich abschätzen, ob man das am Ende doch lieber manuell machen möchte. Man muss halt "nur" beim Hinzufügen neuer Dependencies die Augen offen halten und ab und an mal die alte generierte Liste gegen eine frische generierte Liste halten, falls sich innerhalb der Dependencies mal was ändert.

Also eine Lizenzdatei hätten wir, und in dieser ist doch auch eine Referenz/ein Link enthalten ...

Wo genau ist denn diese Datei? Ich habe bisher immer nur eine Summary gesehen, wo der Name und ein Link drin waren. Das ist prima und gut, aber eben dann nicht ganz ausreichend.

Hast Du mal geschaut, ob das wirklich alle Libs sind, die im JAR landen? Also fehlt da noch was? Oder findet das Plugin irgendwas zu viel?

Ich glaube, es ist alles dabei und landet im jar. Ich kann aber nur vermuten, dass das stimmt. 75 % 🤪

An der Stelle kommst Du in Deiner Rolle als SHK ins Spiel: Bitte analysiere die im Starter.jar enthaltenen fremden Projekte und vergleiche das mit der erzeugten Summary. 75% ist leider nicht gut genug. Und ja: Das muss nicht jetzt sofort sein, das kannst Du gern über ein paar Wochen strecken - so wie es die Zeit erlaubt.

@tgrothe
Copy link
Contributor Author

tgrothe commented May 3, 2024

@cagix okay, danke für deine antwort. ich schaue mir die sache in ruhe noch einmal an.

eine andere sache wäre, das hat aber nicht direkt mit diesem pr zu tun, ob man die Starter.jar statt in einem separaten repo nicht hier direkt als in diesem repo als github release anbieten könnte oder sollte? und benötigte, zusätzliche files könnte man ja mit an das jeweilige release anheften.

das mehr oder weniger nur laut gedacht (hoffentlich nicht abwegig), zu dem ich ein issue anlegen könnte.

@cagix
Copy link
Member

cagix commented May 3, 2024

eine andere sache wäre, das hat aber nicht direkt mit diesem pr zu tun, ob man die Starter.jar statt in einem separaten repo nicht hier direkt als in diesem repo als github release anbieten könnte oder sollte? und benötigte, zusätzliche files könnte man ja mit an das jeweilige release anheften.

@tgrothe ich meine, darüber hätte @AMatutat nachgedacht. allerdings sind mir die gründe für das extra repo grad auch nicht mehr transparent.

an sich finde ich das extra starter-repo etwas schöner, weil hier wirklich nur auf den einen use-case bezug genommen wird (nutzung durch lehrende fern der informatik), während hier im hauptrepo eine fast erschlagende fülle an (immer noch nicht besonders gut dargestellten) informationen direkt auf der startseite wartet - das ist sicher nix für außenstehende.

dennoch, das problem mit den lizenz-dateien besteht ja so oder so.

@AMatutat
Copy link
Contributor

AMatutat commented May 3, 2024

Da ich aktiv gementiont wurde:

an sich finde ich das extra starter-repo etwas schöner

Soweit ich mich erinnere, war genau das der Grund.

@tgrothe tgrothe marked this pull request as draft May 3, 2024 15:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

StarterKit: Auflistung der Dependencies samt Lizenz
3 participants