
Wie hier beschrieben, hier noch eine Version mit externen Abhängigkeiten, dazu einfach den Filter entfernen.
Dieser Java 21-Code ist eine Stream-Pipeline, die Abhängigkeiten zwischen Java-Paketen analysiert und sie als gerichtete Graphen-Kanten (in der Form “PaketA –> PaketB“ ) in einer Set
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
void exportDependencyGraphAsPlantUML() throws Exception { StringBuilder uml = new StringBuilder(); uml.append("@startuml\n"); uml.append("title Taxonomie Architektur (ArchUnit Export with extern Package)\n\n"); // ===================================================== // Knoten (Pakete) // ===================================================== uml.append("package model {}\n"); uml.append("package service {}\n"); uml.append("package data {}\n"); uml.append("package arch {}\n\n"); // ===================================================== // Abhängigkeiten extrahieren // ===================================================== Set<String> edges = classes.stream().flatMap(c -> c.getDirectDependenciesFromSelf().stream()).map(dep -> { String from = dep.getOriginClass().getPackageName(); String to = dep.getTargetClass().getPackageName(); return from + " --> " + to; }).collect(Collectors.toSet()); // ===================================================== // Kanten schreiben // ===================================================== for (String edge : edges) { String cleaned = edge.replace("de.wenzlaff.taxonomie.", "").replace("..", ""); uml.append(cleaned).append("\n"); } uml.append("\n@enduml"); // ===================================================== // Datei schreiben // ===================================================== Path output = Path.of("target/taxonomy-architecture.puml"); Files.createDirectories(output.getParent()); Files.writeString(output, uml.toString()); } |
