public void contribute()

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));
            }
        });
    }