in jps-wrapper/src/main/java/org/jetbrains/jps/model/serialization/JpsProjectLoader.java [124:155]
public static void loadProject(JpsProject project,
Map<String, String> pathVariables,
@NotNull JpsPathMapper pathMapper,
@NotNull Path projectPath,
@Nullable Path projectBasePath,
@Nullable Path externalConfigurationDirectory,
@NotNull Executor executor,
boolean loadUnloadedModules) throws IOException {
if (Files.isRegularFile(projectPath) && projectPath.toString().endsWith(".ipr")) {
new JpsProjectLoader(project, pathVariables, pathMapper, projectPath.getParent(), null, loadUnloadedModules)
.loadFromIpr(projectPath, executor);
}
else {
Path dotIdea = projectPath.resolve(PathMacroUtil.DIRECTORY_STORE_NAME);
Path directory;
if (Files.isDirectory(dotIdea)) {
directory = dotIdea;
}
else if (Files.isDirectory(projectPath) && projectPath.endsWith(PathMacroUtil.DIRECTORY_STORE_NAME)) {
directory = projectPath;
}
else {
throw new IOException("Cannot find IntelliJ IDEA project files at " + projectPath);
}
JpsProjectLoader jpsProjectLoader = new JpsProjectLoader(project, pathVariables, pathMapper, directory.getParent(), externalConfigurationDirectory, loadUnloadedModules);
if (projectBasePath != null) {
JpsMacroExpander macroExpander = jpsProjectLoader.myComponentLoader.getMacroExpander();
macroExpander.addFileHierarchyReplacements("PROJECT_DIR", projectBasePath.toFile());
}
jpsProjectLoader.loadFromDirectory(directory, executor);
}
}