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?
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?