mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
External project storage — JPS support libraries
This commit is contained in:
@@ -1141,7 +1141,7 @@ public class BuildManager implements Disposable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (StreamProviderKt.isExternalStorageEnabled()) {
|
if (StreamProviderKt.isExternalStorageEnabled()) {
|
||||||
cmdLine.addParameter("-Dexternal.project.config=" + ProjectUtil.getExternalConfigurationDir(project));
|
cmdLine.addParameter("-D" + GlobalOptions.EXTERNAL_PROJECT_CONFIG + "=" + ProjectUtil.getExternalConfigurationDir(project));
|
||||||
}
|
}
|
||||||
|
|
||||||
final String shouldGenerateIndex = System.getProperty(GlobalOptions.GENERATE_CLASSPATH_INDEX_OPTION);
|
final String shouldGenerateIndex = System.getProperty(GlobalOptions.GENERATE_CLASSPATH_INDEX_OPTION);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2000-2012 JetBrains s.r.o.
|
* Copyright 2000-2017 JetBrains s.r.o.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -38,4 +38,9 @@ public interface GlobalOptions {
|
|||||||
String JPS_SYSTEM_BUILDER_ID = "JPS";
|
String JPS_SYSTEM_BUILDER_ID = "JPS";
|
||||||
// notification about the files changed during compilation, but not compiled in current compilation session
|
// notification about the files changed during compilation, but not compiled in current compilation session
|
||||||
String JPS_UNPROCESSED_FS_CHANGES_MESSAGE_ID = "!unprocessed_fs_changes_detected!";
|
String JPS_UNPROCESSED_FS_CHANGES_MESSAGE_ID = "!unprocessed_fs_changes_detected!";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The path to external project config directory (used for external system projects).
|
||||||
|
*/
|
||||||
|
String EXTERNAL_PROJECT_CONFIG = "external.project.config";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -130,6 +130,13 @@ public class JpsProjectLoader extends JpsLoaderBase {
|
|||||||
for (Path libraryFile : listXmlFiles(dir.resolve("libraries"))) {
|
for (Path libraryFile : listXmlFiles(dir.resolve("libraries"))) {
|
||||||
loadProjectLibraries(loadRootElement(libraryFile));
|
loadProjectLibraries(loadRootElement(libraryFile));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Path externalConfigDir = resolveExternalProjectConfig("project");
|
||||||
|
if (externalConfigDir != null) {
|
||||||
|
LOG.info("External project config dir is used: " + externalConfigDir);
|
||||||
|
loadProjectLibraries(loadRootElement(externalConfigDir.resolve("libraries.xml")));
|
||||||
|
}
|
||||||
|
|
||||||
timingLog.run();
|
timingLog.run();
|
||||||
|
|
||||||
Runnable artifactsTimingLog = TimingLog.startActivity("loading artifacts");
|
Runnable artifactsTimingLog = TimingLog.startActivity("loading artifacts");
|
||||||
@@ -245,15 +252,20 @@ public class JpsProjectLoader extends JpsLoaderBase {
|
|||||||
timingLog.run();
|
timingLog.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
private static Path resolveExternalProjectConfig(@NotNull String subDirName) {
|
||||||
|
String externalProjectConfigDir = System.getProperty("external.project.config");
|
||||||
|
return StringUtil.isEmptyOrSpaces(externalProjectConfigDir) ? null : Paths.get(externalProjectConfigDir, subDirName);
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static List<JpsModule> loadModules(@NotNull List<Path> moduleFiles, @Nullable final JpsSdkType<?> projectSdkType,
|
public static List<JpsModule> loadModules(@NotNull List<Path> moduleFiles, @Nullable final JpsSdkType<?> projectSdkType,
|
||||||
@NotNull final Map<String, String> pathVariables) {
|
@NotNull final Map<String, String> pathVariables) {
|
||||||
List<JpsModule> modules = new ArrayList<>();
|
List<JpsModule> modules = new ArrayList<>();
|
||||||
List<Future<Pair<Path, Element>>> futureModuleFilesContents = new ArrayList<>();
|
List<Future<Pair<Path, Element>>> futureModuleFilesContents = new ArrayList<>();
|
||||||
String externalProjectConfigDir = System.getProperty("external.project.config");
|
Path externalModuleDir = resolveExternalProjectConfig("modules");
|
||||||
Path externalModuleDir = StringUtil.isEmptyOrSpaces(externalProjectConfigDir) ? null : Paths.get(externalProjectConfigDir, "modules");
|
|
||||||
if (externalModuleDir != null) {
|
if (externalModuleDir != null) {
|
||||||
LOG.info("External project config dir is used: " + externalProjectConfigDir);
|
LOG.info("External project config dir is used for modules: " + externalModuleDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Path file : moduleFiles) {
|
for (Path file : moduleFiles) {
|
||||||
|
|||||||
Reference in New Issue
Block a user