in apache-rat-tools/src/main/java/org/apache/rat/tools/MavenGenerator.java [91:157]
public static void main(final String[] args) throws IOException {
if (args == null || args.length < 3) {
System.err.println("At least three arguments are required: package, simple class name, target directory.");
return;
}
String packageName = args[0];
String className = args[1];
String destDir = args[2];
List<MavenOption> options = OptionCollection.buildOptions().getOptions().stream().filter(MAVEN_FILTER)
.map(MavenOption::new).collect(Collectors.toList());
String pkgName = String.join(File.separator, new CasedString(StringCase.DOT, packageName).getSegments());
File file = new File(new File(new File(destDir), pkgName), className + ".java");
System.out.println("Creating " + file);
file.getParentFile().mkdirs();
try (InputStream template = MavenGenerator.class.getResourceAsStream("/Maven.tpl");
FileWriter writer = new FileWriter(file)) {
if (template == null) {
throw new RuntimeException("Template /Maven.tpl not found");
}
LineIterator iter = IOUtils.lineIterator(new InputStreamReader(template, StandardCharsets.UTF_8));
while (iter.hasNext()) {
String line = iter.next();
switch (line.trim()) {
case "${static}":
for (Map.Entry<String, String> entry : RENAME_MAP.entrySet()) {
writer.append(format(" xlateName.put(\"%s\", \"%s\");%n", entry.getKey(), entry.getValue()));
}
for (Option option : MavenOption.getFilteredOptions()) {
writer.append(format(" unsupportedArgs.add(\"%s\");%n", argsKey(option)));
}
for (MavenOption option : options) {
if (option.isDeprecated()) {
writer.append(format(" deprecatedArgs.put(\"%s\", \"%s\");%n", argsKey(option.option),
format("Use of deprecated option '%s'. %s", option.getName(), option.getDeprecated())));
}
}
break;
case "${methods}":
writeMethods(writer, options);
break;
case "${package}":
writer.append(format("package %s;%n", packageName));
break;
case "${constructor}":
writer.append(format(" protected %s() {\n" +
" setDeprecationReporter();\n" +
" }%n", className));
break;
case "${class}":
writer.append(format("public abstract class %s extends AbstractMojo {%n", className));
break;
case "${commonArgs}":
try (InputStream argsTpl = MavenGenerator.class.getResourceAsStream("/Args.tpl")) {
if (argsTpl == null) {
throw new RuntimeException("Args.tpl not found");
}
IOUtils.copy(argsTpl, writer, StandardCharsets.UTF_8);
}
break;
default:
writer.append(line).append(System.lineSeparator());
break;
}
}
}
}