Maven-Abhängigkeiten im Build prüfen?

LimDul

Top Contributor
Ich stehe jetzt vor der Herausforderung, die Entwicklung für ein größeres Projekt zu organisieren (in der Vollausbaustufe ca. 40 verschiedene Anwendungen, die als Docker-Container in die Cloud deployed werden). Wir reden hier über Anwendungen die teilweise nahe an einem Monolithen sind, aber auch von Anwendungen die wirklich ein simpler Mikro-Service sind und die ganze Bandbreite dazwischen. Alles Spring Boot & Maven

Eine Sache, die ich dabei sicherstellen will, dass diese Anwendungen entkoppelt bleiben. Ich will vermeiden, dass Anwendung A eine Dependency auf einen Business-Teil von Anwendung B hat. Anwendungen dürfen nur das externe DTO-Modell der anderen Anwendungen referenzieren. Es hindert aber niemand einen Entwickler eine solche böse Dependency in die POM einzutragen, ich hab im Laufe der Zeit immer wieder erlebt, dass Dependency ergänzt wurden, die nicht hätten sein dürfen. In den meisten Fällen harmlos, aber hier kommen ein paar Aspekte dazu insbesondere auch die Projektlaufzeit (5 Jahre Entwicklung, 10+ Betrieb & Wartung). Daher will ich das automatisiert prüfen.

Archunit kann - soweit ich das sehe - nur auf Package Ebene checken. Das ist mir zu schwierig, auch wenn ich die Packages normalisieren will. Gibt es Möglichkeiten - ich denke da ein Jenkins Plugin - dem ich Richtlinien hinterlegen kann bzgl. verbotener Maven-Dependencys? So dass dann der Build failed?
 

LimDul

Top Contributor
Jepp, genau das. Jetzt wo ich lese, stelle ich fest, hab ich den Namen auch schon mal gehört. Aber find das mal mit Google wenn du was mit maven dependency check suchst :D


Es macht mit dem Handling von includes/excludes es auch genau so, wie ich es vermutlich danke. Komplette group-ids bannen und dann einzelne Artefact-IDs rausnehmen. Jetzt bleibt nur die spannende Frage, wie ich verhindere, dass ein Entwickler an der POM rumpfuscht :) aber an dem Teil wird man eher selten brangehen, während eine Dependency ja mal schnell ergänzt ist, ggf. macht das die IDE ja sogar fast unsichtbar im Hintergrund
 

LimDul

Top Contributor
Meine Idee wäre sowas wie JQAssistant... https://github.com/jqassistant
Was kann das besser, dafür es gefühlt exponentiell komplexer aussieht? Ich finde da jetzt nicht, wie Maven Abhängigkeiten prüfen kann? Alleine transitive Dependencys sehe ich da nicht, dass ich mal eben prüfen kann.

Das sieht für mich auf den ersten Blick wie mit Kanonen auf Spatzen geschossen aus und führt zu einem weiteren Tool mit einer weiteren, nicht trivialen Syntax, wofür Wissen vorgehalten werden muss. Das Tool sieht nicht schlecht aus - aber für das was ich brauche ist es schlicht zu aufwendig und damit zu teuer nach meinem dafürhalten.
 

KonradN

Super-Moderator
Mitarbeiter
Nur mal so als dumme Idee: Ist es evtl. eine Idee, dass man ein eigenes Repository aufsetzt?

Klar, Entwickler greifen ggf. weiter auf Maven Central zu oder so, aber die Build Server dürften ja nicht in der Hand der Entwickler sein. Da könnte man dann ein entsprechenden Mirror vorgeben.

Dann steuert man nur noch den Mirror. Eine Dependency, die nicht freigegeben wurde, steht dann nicht zur Verfügung.

Wobei das auch nicht zu 100% stimmt. Man kann dann immer noch ein lokales Repository angeben, das dann mit in der Source Verwaltung ist wo Entwickler beliebige Dinge mit hinein packen ...Aber da dürfte klar sein, dass hier Security der Firma klar umgangen wird....

Das nur als kleine Idee. Das ist halt, was ich auch kenne in diversen Ausführungen bei diversen Firmen.
 

LimDul

Top Contributor
Eigenes Repo geht nicht. Was tiefer ins Detail, ich hab zwei Anwendungen A und B, beide liegen im gleichen GIT & gleichen Maven Repository.

Beide bestehen aus Modulen "domain", "business", "web" und "extapi".

Anwendung A darf logischerweise ihre eigenen Module referenzieren und das Modul extapi vom Anwendung B - aber keine anderen Module von Anwendung B. Und das sollte so wie ich das sehe mit dem enforcer Plugin simpel sein
 

LimDul

Top Contributor
Schreib dir doch einfach ein Script dafür.
Warum, wenn das Maven Plugin genau das leistet?
Ich verstehe dich nicht ganz. Die POM(s) verwalten die Dependencies, und macht ihr keine Reviews der Code-Owner?
Auch wenn ich mir nicht sicher bin, wie sinnvoll die Antwort für dich ist, für andere kann es vielleicht erhellend sein. Wir reden hier über Software, deren Betrieb unter anderem unter DORA fällt und wo Fehler in Produktion schnell echt teuer werden können. Natürlich gibt es Code Reviews und natürlich gibt es Guildelines, das man sowas nicht macht. Aber auch beim Autofahren gibt es Regeln die einen Unfall verhindern sollen. Und auch da gibt es zig Absicherungen (Airbag, Notbrems-Assistenten, Sicherheitsgurt etc.). Daher sind zusätzliche, automatisch geprüfte Regeln selten verkehrt (Man muss immer Kosten/Nutzen abwägen). Aber die Implementierung wird vermutlich weniger als eine Woche dauern und wenn damit in den nächsten 15 Jahren auch nur ein Produktionsfehler vermieden wird, hat es sich schon gerechmet.
 

Ebi

Mitglied
Ich würde das nicht auf der Ebene von Maven machen, sondern entweder dafür das java module system verwenden, oder Archunit verwenden. Mein Argument dafür wäre, dass besser ist, solche Regeln klar im Code zu formulieren, als implizit über die POM. Aber wahrscheinlich ist das Geschmackssache
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Programm mit Maven erstellen und starten samt Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 27
P Maven Projekt Abhängigkeiten auf bekante Schwachstellen prüfen Tools - Maven, Gradle, Ant & mehr 4
E Maven: Wie Abhängigkeiten analysieren? Tools - Maven, Gradle, Ant & mehr 0
S Maven Maven Site bleibt bei Abhängigkeiten hängen. Tools - Maven, Gradle, Ant & mehr 2
D [Maven] mehrere Abhängigkeiten benutzen gleichbenannte aber verschiedene Resource Tools - Maven, Gradle, Ant & mehr 3
D Maven deployment über WebDAV Tools - Maven, Gradle, Ant & mehr 3
D Maven ear plugin konfigurieren Tools - Maven, Gradle, Ant & mehr 24
F Maven Fehler Tools - Maven, Gradle, Ant & mehr 11
R Maven erzeugt package ohne Bibliotheken (Libaries, Dependencies) Tools - Maven, Gradle, Ant & mehr 10
Oneixee5 Maven deploy - per SSH Tools - Maven, Gradle, Ant & mehr 6
H Maven kein Hauptmanifestattribut Tools - Maven, Gradle, Ant & mehr 10
D Interne Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 51
J log4j2 mit Hibernate über Maven Tools - Maven, Gradle, Ant & mehr 10
thor_norsk Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf IntelliJ IDE starten Tools - Maven, Gradle, Ant & mehr 8
H Maven JUnit5 Tests werden ignoriert Tools - Maven, Gradle, Ant & mehr 5
thor_norsk Maven Tools - Maven, Gradle, Ant & mehr 32
ExceptionOfExpectation Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf Eclipse starten Tools - Maven, Gradle, Ant & mehr 20
Ich kann Maven nicht als UmgebungsVariable hinzufügen Tools - Maven, Gradle, Ant & mehr 2
F Maven JAR Plugin Probleme Tools - Maven, Gradle, Ant & mehr 4
W Was "braucht" man denn alles? Maven, Ant, Git, ... Tools - Maven, Gradle, Ant & mehr 21
N Fehler beim Imgui mit Maven Tools - Maven, Gradle, Ant & mehr 7
M Spring Boot Maven pom.xml-Eintrag Tools - Maven, Gradle, Ant & mehr 17
Encera JavaFX und Maven funktioniert nicht Tools - Maven, Gradle, Ant & mehr 1
B maven multi module Projekt und unnötige/zusätzliche Leerzeilen Tools - Maven, Gradle, Ant & mehr 4
J Maven Konfusion Tools - Maven, Gradle, Ant & mehr 7
Tippster Maven Sqlite integrieren (Eclipse, Maven) Tools - Maven, Gradle, Ant & mehr 4
T Image kreieren mit Maven bei JavaFX und nicht modularen Jars Tools - Maven, Gradle, Ant & mehr 12
T JSON Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 7
T JavaFX, Jar über Maven kreieren Tools - Maven, Gradle, Ant & mehr 2
Encera Libraries Maven Projekt hinzufügen Tools - Maven, Gradle, Ant & mehr 9
Oneixee5 Maven Phase Tools - Maven, Gradle, Ant & mehr 3
Robertop maven copy-resources nicht in WAR Datei Tools - Maven, Gradle, Ant & mehr 2
T Maven: Probleme beim Einbinden der Dependencies Tools - Maven, Gradle, Ant & mehr 9
M Mit Maven eine jar Datei bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 1
M Mit Maven eine jar Datei Bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 18
H Maven Maven: <mainClass>NAME?</mainClass> Tools - Maven, Gradle, Ant & mehr 13
H Maven maven-source-plugin is missing Tools - Maven, Gradle, Ant & mehr 5
M Missing Artifact on selbst gehostestes Maven Paket Tools - Maven, Gradle, Ant & mehr 8
M Error code 409 maven Tools - Maven, Gradle, Ant & mehr 5
M github + maven Fehler beim repository erstellen Tools - Maven, Gradle, Ant & mehr 1
M durch Maven wird "var" nicht gefunden Tools - Maven, Gradle, Ant & mehr 4
N Maven Intellij Maven Projekt erstell keine src Tools - Maven, Gradle, Ant & mehr 4
LimDul Maven Einzelne Unit Tests in Maven Builds skippen Tools - Maven, Gradle, Ant & mehr 3
M Maven jpackage-image wird nicht gefunden Tools - Maven, Gradle, Ant & mehr 22
M javafx wird in einem alten programm nicht bei maven gefunden Tools - Maven, Gradle, Ant & mehr 15
L Maven IntelliJ, Maven und JavaFX + SceneBuilder Tools - Maven, Gradle, Ant & mehr 23
von Spotz Maven und Spring: "Add to classpath" ? Tools - Maven, Gradle, Ant & mehr 29
Kirby.exe Projekt mit Maven kompilieren Tools - Maven, Gradle, Ant & mehr 13
H Maven dependency Problem ? Tools - Maven, Gradle, Ant & mehr 23
B Maven und Intellij Tools - Maven, Gradle, Ant & mehr 24
P Maven Test werden nicht ausgeführt . Junit . Maven . Surefire . Eclipse Tools - Maven, Gradle, Ant & mehr 12
yakazuqi Maven Eigene API mit Maven einbinden Tools - Maven, Gradle, Ant & mehr 1
M Was ist besser für den Anfang, Maven oder Gradle? Tools - Maven, Gradle, Ant & mehr 6
P Maven Wie die Maven Project version in JSP page verwenden? Tools - Maven, Gradle, Ant & mehr 2
C Maven Multi-Module Projekt Tools - Maven, Gradle, Ant & mehr 2
T Maven Warnings/Fehlermeldungen Tools - Maven, Gradle, Ant & mehr 12
T Maven und Datenbank(treiber) Tools - Maven, Gradle, Ant & mehr 13
T Maven Runnable Jar Tools - Maven, Gradle, Ant & mehr 5
T Grundlagen Maven und Git/Github Tools - Maven, Gradle, Ant & mehr 2
LimDul Maven Maven Surefire Plugin - Warnings upgrade Tools - Maven, Gradle, Ant & mehr 2
G Maven upload Tools - Maven, Gradle, Ant & mehr 0
K Maven - Parent oder Dependency? Tools - Maven, Gradle, Ant & mehr 5
B Maven Maven deploy Tools - Maven, Gradle, Ant & mehr 4
H Jenkins keine Tests gefunden - aber in Maven Tools - Maven, Gradle, Ant & mehr 30
P Mit Maven einen spezifischen Branch nach Tag-Parameter erstellen (in Jenkins-Job) Tools - Maven, Gradle, Ant & mehr 3
P Nur einen Teilbaum in Maven releasen? Tools - Maven, Gradle, Ant & mehr 7
D Cannot invoke "javafx.scene.control.MenuButton.getScene()" nach konvertierung zu maven Tools - Maven, Gradle, Ant & mehr 3
H Maven - keine Durchführung von Tests Tools - Maven, Gradle, Ant & mehr 12
H Jenkins - maven-jar-plugin - kein jar-file Tools - Maven, Gradle, Ant & mehr 38
P JavaFX jar mit Maven Tools - Maven, Gradle, Ant & mehr 9
P Maven & Intellij Modul kann nicht aufgelöst werden Tools - Maven, Gradle, Ant & mehr 12
H Eclipse JUnit erzeugt Fehler im Maven-Test Tools - Maven, Gradle, Ant & mehr 1
H Maven Anfängerproblem - No plugin found for prefix 'archetype' in the current project and in the plugin groups Tools - Maven, Gradle, Ant & mehr 25
sascha-sphw Maven vs Gradle Tools - Maven, Gradle, Ant & mehr 24
D Maven Maven und die Build-Geschwindigkeit Tools - Maven, Gradle, Ant & mehr 11
K Maven IntelliJ + Maven + JavaFX Tools - Maven, Gradle, Ant & mehr 2
J Maven Mit Maven eine ZIP Datei erstellen Tools - Maven, Gradle, Ant & mehr 0
K Maven install schlägt fehl Tools - Maven, Gradle, Ant & mehr 10
I Problem: Maven import extern Lib Tools - Maven, Gradle, Ant & mehr 3
Tom299 Maven Maven funktioniert nach Installation nicht Tools - Maven, Gradle, Ant & mehr 1
I Maven Interface hinzugefügt - Error Tools - Maven, Gradle, Ant & mehr 1
M Verständnisfrage Maven Tools - Maven, Gradle, Ant & mehr 2
S Maven installieren - "Befehl wurde nicht gefunden" Tools - Maven, Gradle, Ant & mehr 1
E Maven Maven distributionManagement Vererbung in child POM Tools - Maven, Gradle, Ant & mehr 8
P Maven Parent- Child POMs Tools - Maven, Gradle, Ant & mehr 13
E Release Kandidaten mit Maven bauen Tools - Maven, Gradle, Ant & mehr 4
C Orderstruktur bei Libarys - Wie mit Ant oder Maven lösen? Tools - Maven, Gradle, Ant & mehr 0
G Maven, finde Dependency nicht... Tools - Maven, Gradle, Ant & mehr 2
G Maven Continious Integration mit Jenkins, Maven und Nexus - wie richtig? Tools - Maven, Gradle, Ant & mehr 1
P Maven Parent und Child Poms - dependencies Tools - Maven, Gradle, Ant & mehr 1
reibi Maven Maven + Eclipse Tools - Maven, Gradle, Ant & mehr 0
P Maven add resource Tools - Maven, Gradle, Ant & mehr 0
D [Maven Pluginentwicklung] - Plugin das nur auf Parent pom läuft Tools - Maven, Gradle, Ant & mehr 0
S Maven Maven und Auflösen von JSF EL Tools - Maven, Gradle, Ant & mehr 5
H Maven HSQLDB in den Maven lifecycle einbinden Tools - Maven, Gradle, Ant & mehr 5
S Maven Unterschiedliche Deployments mit Maven Tools - Maven, Gradle, Ant & mehr 2
S Maven buildnumber-maven-plugin / Formatproblem mit timestamp Tools - Maven, Gradle, Ant & mehr 17
P Erzeugen von WebServices mit Maven und Eclipse (external Tool) Tools - Maven, Gradle, Ant & mehr 2
aze Maven downgraden von 3.x auf 2.09 unter Linux Tools - Maven, Gradle, Ant & mehr 4
Rudolf JSF und Maven mit Eclipse Tools - Maven, Gradle, Ant & mehr 5

Ähnliche Java Themen


Oben