in initializr-generator/src/main/java/io/spring/initializr/generator/ProjectGenerator.java [214:276]
protected File generateProjectStructure(ProjectRequest request,
Map<String, Object> model) {
File rootDir;
try {
rootDir = File.createTempFile("tmp", "", getTemporaryDirectory());
}
catch (IOException ex) {
throw new IllegalStateException("Cannot create temp dir", ex);
}
addTempFile(rootDir.getName(), rootDir);
rootDir.delete();
rootDir.mkdirs();
File dir = initializerProjectDir(rootDir, request);
if (isGradleBuild(request)) {
String gradle = new String(doGenerateGradleBuild(model));
writeText(new File(dir, "build.gradle"), gradle);
String settings = new String(doGenerateGradleSettings(model));
writeText(new File(dir, "settings.gradle"), settings);
writeGradleWrapper(dir, Version.safeParse(request.getBootVersion()));
}
else {
String pom = new String(doGenerateMavenPom(model));
writeText(new File(dir, "pom.xml"), pom);
writeMavenWrapper(dir);
}
generateGitIgnore(dir, request);
String applicationName = request.getApplicationName();
String language = request.getLanguage();
String codeLocation = language;
File src = new File(new File(dir, "src/main/" + codeLocation),
request.getPackageName().replace(".", "/"));
src.mkdirs();
String extension = ("kotlin".equals(language) ? "kt" : language);
write(new File(src, applicationName + "." + extension),
"Application." + extension, model);
if ("war".equals(request.getPackaging())) {
String fileName = "ServletInitializer." + extension;
write(new File(src, fileName), fileName, model);
}
File test = new File(new File(dir, "src/test/" + codeLocation),
request.getPackageName().replace(".", "/"));
test.mkdirs();
setupTestModel(request, model);
write(new File(test, applicationName + "Tests." + extension),
"ApplicationTests." + extension, model);
File resources = new File(dir, "src/main/resources");
resources.mkdirs();
writeText(new File(resources, "application.properties"), "");
if (request.hasWebFacet()) {
new File(dir, "src/main/resources/templates").mkdirs();
new File(dir, "src/main/resources/static").mkdirs();
}
return rootDir;
}