GH-1063 - Documenter now creates application module metadata file.
This commit is contained in:
@@ -20,10 +20,12 @@ import static org.springframework.modulith.docs.Asciidoctor.*;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.UncheckedIOException;
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.function.BiConsumer;
|
||||
@@ -40,8 +42,10 @@ import org.springframework.modulith.core.ApplicationModules;
|
||||
import org.springframework.modulith.core.DependencyDepth;
|
||||
import org.springframework.modulith.core.DependencyType;
|
||||
import org.springframework.modulith.core.SpringBean;
|
||||
import org.springframework.modulith.core.util.ApplicationModulesExporter;
|
||||
import org.springframework.modulith.docs.Groupings.JMoleculesGroupings;
|
||||
import org.springframework.modulith.docs.Groupings.SpringGroupings;
|
||||
import org.springframework.modulith.docs.util.BuildSystemUtils;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.LinkedMultiValueMap;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
@@ -195,7 +199,8 @@ public class Documenter {
|
||||
return writeModulesAsPlantUml(diagramOptions)
|
||||
.writeIndividualModulesAsPlantUml(diagramOptions)
|
||||
.writeModuleCanvases(canvasOptions)
|
||||
.writeAggregatingDocument(diagramOptions, canvasOptions);
|
||||
.writeAggregatingDocument(diagramOptions, canvasOptions)
|
||||
.writeModuleMetadata();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -390,6 +395,30 @@ public class Documenter {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes application module metadata to the build folder for inclusion at runtime.
|
||||
*
|
||||
* @return will never be {@literal null}.
|
||||
* @see ApplicationModulesExporter
|
||||
* @since 1.4
|
||||
*/
|
||||
public Documenter writeModuleMetadata() {
|
||||
|
||||
var content = new ApplicationModulesExporter(modules).toFullJson();
|
||||
var path = Path.of(BuildSystemUtils.getResourceTarget(), ApplicationModulesExporter.DEFAULT_LOCATION);
|
||||
|
||||
try {
|
||||
|
||||
Files.createDirectories(path.getParent());
|
||||
Files.writeString(path, content, StandardOpenOption.CREATE);
|
||||
|
||||
} catch (IOException o_O) {
|
||||
throw new UncheckedIOException(o_O);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
String toModuleCanvas(ApplicationModule module) {
|
||||
return toModuleCanvas(module, CanvasOptions.defaults());
|
||||
}
|
||||
|
||||
@@ -62,6 +62,16 @@ public class BuildSystemUtils {
|
||||
return isMaven() ? "target/test-classes" : "build/classes/java/test";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the path to the target folder for resources.
|
||||
*
|
||||
* @return will never be {@literal null}.
|
||||
* @since 1.4
|
||||
*/
|
||||
public static String getResourceTarget() {
|
||||
return isMaven() ? "target/classes" : "build/resources/main";
|
||||
}
|
||||
|
||||
private static String getTargetFolder() {
|
||||
return isMaven() ? "target" : "build";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user