in src/org/jetbrains/jps/builders/StandardBuilders.groovy [28:128]
def doBuildModule(ModuleChunk module, ModuleBuildState state, ProjectBuilder projectBuilder) {
if (state.sourceRoots.isEmpty()) return;
String sourceLevel = module["sourceLevel"]
String targetLevel = module["targetLevel"]
String customArgs = module["javac_args"]; // it seems javac_args property is not set, can we drop it?
if (projectBuilder.useInProcessJavac) {
String version = System.getProperty("java.version")
if (true) {
if (Java16ApiCompilerRunner.compile(module, projectBuilder, state, sourceLevel, targetLevel, customArgs)) {
return
}
}
else {
projectBuilder.info("In-process Javac won't be used for '${module.name}', because Java version ($version) doesn't match to source level ($sourceLevel)")
}
}
def params = [:]
params.destdir = state.targetFolder
if (sourceLevel != null) params.source = sourceLevel
if (targetLevel != null) params.target = targetLevel
def javacOpts = module.project.compilerConfiguration.javacOptions;
def memHeapSize = javacOpts["MAXIMUM_HEAP_SIZE"] == null ? "512m" : javacOpts["MAXIMUM_HEAP_SIZE"] + "m";
def boolean debugInfo = !"false".equals(javacOpts["DEBUGGING_INFO"]);
def boolean nowarn = "true".equals(javacOpts["GENERATE_NO_WARNINGS"]);
def boolean deprecation = !"false".equals(javacOpts["DEPRECATION"]);
customArgs = javacOpts["ADDITIONAL_OPTIONS_STRING"];
if ((customArgs == null || customArgs.indexOf("-encoding") == -1) && module.project.projectCharset != null) {
params.encoding = module.project.projectCharset;
}
params.fork = "true"
params.memoryMaximumSize = memHeapSize;
params.debug = String.valueOf(debugInfo);
params.nowarn = String.valueOf(nowarn);
params.deprecation = String.valueOf(deprecation);
params.verbose = "true"
def javacExecutable = getJavacExecutable(module)
if (javacExecutable != null) {
params.executable = javacExecutable
}
def ant = projectBuilder.binding.ant
if (state.projectWrapper != null) {
final BuildListener listener = new AntListener(state.targetFolder, state.sourceRoots, state.callback)
ant.project.addBuildListener(listener)
};
ant.javac(params) {
if (customArgs) {
compilerarg(line: customArgs)
}
if (state.projectWrapper != null && state.sourceFiles != null) {
List patterns = []
state.sourceFiles.each {
for (String root: state.sourceRoots) {
if (it.startsWith(root) && it.endsWith(".java")) {
patterns << it.substring(root.length() + 1)
break;
}
}
patterns.each {
include(name: it)
}
}
}
state.sourceRoots.each {
src(path: it)
}
state.excludes.each { String root ->
state.sourceRoots.each {String src ->
if (root.startsWith("${src}/")) {
exclude(name: "${root.substring(src.length() + 1)}/**")
}
}
}
classpath {
state.classpath.each {
pathelement(location: it)
}
}
}
if (state.projectWrapper != null) {
ant.project.removeBuildListener(listener)
};
if (state.sourceFiles != null) {
projectBuilder.listeners*.onJavaFilesCompiled(module, state.sourceFiles.size())
}
}