in initializer-generator/src/main/java/com/alibaba/initializer/generation/extension/SampleCodeContributor.java [91:145]
public void contribute(Path projectRoot) throws IOException {
Language language = description.getLanguage();
Map<String, String> params = new HashMap<>();
params.put(BootstrapTemplateRenderConstants.KEY_APP_SHOTNAME, description.getName());
params.put(BootstrapTemplateRenderConstants.KEY_APPLICATION_NAME, description.getApplicationName());
params.put(BootstrapTemplateRenderConstants.KEY_BASE_PACKAGE, description.getPackageName());
params.put(BootstrapTemplateRenderConstants.KEY_SPRINGBOOT_VERSION, description.getPlatformVersion().toString());
params.put(BootstrapTemplateRenderConstants.KEY_JAVA_VERSION, description.getLanguage().jvmVersion());
params.put(KEY_ARTIFACT_ID, description.getArtifactId());
params.put(BootstrapTemplateRenderConstants.KEY_MODULE, module.getName());
params.put(BootstrapTemplateRenderConstants.KEY_BASE_VERSION, description.getVersion());
SourceStructure structure = description.getBuildSystem().getMainSource(projectRoot, language);
Architecture architecture = description.getArchitecture();
Map<Dependency, String> dependencyRepoUris = getRepos(description);
List<String> uris = new ArrayList<>();
if (architecture.getId().equals("none")) {
dependencyRepoUris.values().forEach(uri -> {
uris.add(uri);
uris.add(uri + "/api");
});
} else {
dependencyRepoUris.values().forEach(uri -> {
if (module.isMain())
uris.add(uri);
else
uris.add(uri + "/" + module.getName());
});
}
uris.forEach(uri -> {
CodeTemplateRepo repo = loader.load(uri);
RepoRenderResult result = renderer.render(repo, params);
// write code
List<RepoRenderResult.TemplateRenderResult> codes = result.getResults(language.id());
codes.forEach(res -> writeCode(res, language, projectRoot, structure));
// write resources
List<RepoRenderResult.TemplateRenderResult> resources = result.getResults("resources");
resources.forEach(res -> writeResources(res, language, projectRoot, structure));
// write protobuf file
List<RepoRenderResult.TemplateRenderResult> proto = result.getResults("proto");
proto.forEach(res -> writeProtoBuf(res, language, projectRoot, structure));
// write root
if (module.isRoot()) {
List<RepoRenderResult.TemplateRenderResult> roots = result.getResults("root");
roots.forEach(res -> writeRoot(res, language, projectRoot, structure));
}
});
}