in tooling/camel-spring-boot-generator-maven-plugin/src/main/java/org/apache/camel/springboot/maven/StarterGeneratorMojo.java [124:158]
private void createStarter() throws MojoFailureException, IOException {
getLog().info("Creating starter for " + componentName);
File directory = new File(startersDir, "camel-" + componentName + "-starter");
if (directory.exists()) {
if (directory.isDirectory()) {
throw new MojoFailureException("Directory already exists: " + directory);
} else {
throw new MojoFailureException("Can not create directory as a file already exists: " + directory);
}
}
if (!directory.mkdirs()) {
throw new MojoFailureException("Unable to create directory: " + directory);
}
Files.write(new File(directory, "pom.xml").toPath(),
Files.lines(sourcePom.toPath())
.map(s -> s.replaceAll("%NAME%", componentName))
.collect(Collectors.toList()));
Path parent = new File(startersDir, "pom.xml").toPath();
List<String> lines = Files.readAllLines(parent);
int modulesStart = -1, modulesEnd = -1;
for (int i = 0; i < lines.size(); i++) {
String s = lines.get(i);
if (s.contains("<modules>"))
modulesStart = i + 1;
else if (s.contains("</modules>"))
modulesEnd = i;
}
lines = concat(lines.subList(0, modulesStart).stream(),
Stream.concat(lines.subList(modulesStart, modulesEnd).stream(),
Stream.of(" <module>camel-" + componentName + "-starter</module>"))
.sorted().distinct(),
lines.subList(modulesEnd, lines.size()).stream())
.collect(Collectors.toList());
Files.write(parent, lines);
}