update java compilation to abort on compile errors after each package

This commit is contained in:
Gered 2017-04-11 12:03:40 -04:00
parent 12f01889ac
commit b06493dc93
2 changed files with 19 additions and 10 deletions

View file

@ -103,7 +103,9 @@ public class CJavaPipeline {
*/ */
System.out.println("\n\nInit"); System.out.println("\n\nInit");
System.out.println("Cleaning existing generated output"); System.out.println("Cleaning existing generated output");
FileUtils.deleteDirectory(new File(processingOptions.getProperty(GENERATE_TO_DIR))); for (PackageProcessOptions pkg : packages) {
FileUtils.deleteDirectory(new File(processingOptions.getProperty(GENERATE_TO_DIR) + "/" + pkg.packageName));
}
FileUtils.deleteDirectory(new File(processingOptions.getProperty(HEADERS_DIR_PROPERTY))); FileUtils.deleteDirectory(new File(processingOptions.getProperty(HEADERS_DIR_PROPERTY)));
FileUtils.deleteDirectory(new File(processingOptions.getProperty(COMPILE_DIR_PROPERTY))); FileUtils.deleteDirectory(new File(processingOptions.getProperty(COMPILE_DIR_PROPERTY)));
FileUtils.deleteDirectory(new File(processingOptions.getProperty(C_IMPLEMENTATION_FILE_PROPERTY)).getParentFile()); FileUtils.deleteDirectory(new File(processingOptions.getProperty(C_IMPLEMENTATION_FILE_PROPERTY)).getParentFile());
@ -192,7 +194,11 @@ public class CJavaPipeline {
MyJavaCompiler compiler = new MyJavaCompiler(); MyJavaCompiler compiler = new MyJavaCompiler();
for (PackageProcessOptions pkg : packages) { for (PackageProcessOptions pkg : packages) {
compiler.run(new File(processingOptions.get(GENERATE_TO_DIR) + "/" + pkg.packageName), javaOut); if (!compiler.run(new File(processingOptions.get(GENERATE_TO_DIR) + "/" + pkg.packageName), javaOut)) {
System.out.println("\n\nAborting due to compile errors (see above).");
System.exit(1);
return;
}
} }
/** /**

View file

@ -19,10 +19,9 @@ public class MyJavaCompiler {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
@SuppressWarnings("ConstantConditions") @SuppressWarnings("ConstantConditions")
public void run(File inDir, File outDir) { public boolean run(File inDir, File outDir) throws Exception {
System.out.println("Compiling " + inDir + ", output " + outDir); System.out.println("Compiling " + inDir + ", output " + outDir);
outDir.delete(); outDir.mkdirs();
outDir.mkdir();
List<JavaFileObject> javaFileObjects = new ArrayList<JavaFileObject>(); List<JavaFileObject> javaFileObjects = new ArrayList<JavaFileObject>();
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>(); DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
@ -58,15 +57,19 @@ public class MyJavaCompiler {
JavaCompiler.CompilationTask compilerTask = JavaCompiler.CompilationTask compilerTask =
compiler.getTask(null, compiler.getStandardFileManager(null, Locale.getDefault(), null), diagnostics, compilationOptions, null, javaFileObjects); compiler.getTask(null, compiler.getStandardFileManager(null, Locale.getDefault(), null), diagnostics, compilationOptions, null, javaFileObjects);
try { boolean status = false;
boolean status = compilerTask.call();
for (Diagnostic diagnostic : diagnostics.getDiagnostics()){ try {
System.out.format("Error on line %d in %s", diagnostic.getLineNumber(), diagnostic); status = compilerTask.call();
}
for (Diagnostic diagnostic : diagnostics.getDiagnostics()) {
System.out.format("Error on line %d in %s", diagnostic.getLineNumber(), diagnostic);
}
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
System.out.println(); System.out.println();
return status;
} }
} }