internal static string GenerateCompilerCommandLine( string outputFolder, ITaskItem[] references, ITaskItem[] sources, bool emitDebugInformation, string[] disabledWarnings) { var builder = new CommandLineBuilder(); #region javac <options> <source files> /* where possible options include: -g Generate all debugging info -g:none Generate no debugging info -g:{lines,vars,source} Generate only some debugging info -nowarn Generate no warnings -verbose Output messages about what the compiler is doing -deprecation Output source locations where deprecated APIs are used -classpath <path> Specify where to find user class files and annotation processors -cp <path> Specify where to find user class files and annotation processors -sourcepath <path> Specify where to find input source files -bootclasspath <path> Override location of bootstrap class files -extdirs <dirs> Override location of installed extensions -endorseddirs <dirs> Override location of endorsed standards path -proc:{none,only} Control whether annotation processing and/or compilation is done. -processor <class1>[,<class2>,<class3>...]Names of the annotation processors to run; bypasses default discovery process -processorpath <path> Specify where to find annotation processors -d <directory> Specify where to place generated class files -s <directory> Specify where to place generated source files -implicit:{none,class} Specify whether or not to generate class files for implicitly referenced files -encoding <encoding> Specify character encoding used by source files -source <release> Provide source compatibility with specified release -target <release> Generate class files for specific VM version -version Version information -help Print a synopsis of standard options -Akey[=value] Options to pass to annotation processors -X Print a synopsis of nonstandard options -J<flag> Pass <flag> directly to the runtime system */ #endregion #region Debugging information if (emitDebugInformation) { builder.AppendSwitch("-g"); } else { builder.AppendSwitch("-g:none"); } #endregion builder.AppendSwitch("-d"); builder.AppendFileNameIfNotNull(outputFolder); builder.AppendSwitch("-Xlint:all"); if (disabledWarnings != null) { foreach (string warning in disabledWarnings) { builder.AppendSwitch("-Xlint:-" + warning); } } #region Project references built into a classpath if (references != null) { builder.AppendSwitch("-classpath"); builder.AppendSwitch('"' + references.Join(";", (item) => item.GetMetadata("HintPath")) + '"'); } #endregion builder.AppendFileNamesIfNotNull(sources, " "); var result = builder.ToString(); return result; }