in src/com/intellij/idea/plugin/hybris/project/descriptors/DefaultHybrisProjectDescriptor.java [648:731]
private void findModuleRoots(
@NotNull final Map<DIRECTORY_TYPE, Set<File>> moduleRootMap,
final Set<File> excludedFromScanning,
final boolean acceptOnlyHybrisModules,
@NotNull final File rootProjectDirectory,
@Nullable final TaskProgressProcessor<File> progressListenerProcessor
) throws InterruptedException, IOException {
if (null != progressListenerProcessor) {
if (!progressListenerProcessor.shouldContinue(rootProjectDirectory)) {
LOG.error("Modules scanning has been interrupted.");
throw new InterruptedException("Modules scanning has been interrupted.");
}
}
if (rootProjectDirectory.isHidden()) {
LOG.debug("Skipping hidden directory: ", rootProjectDirectory);
return;
}
if (excludedFromScanning.contains(rootProjectDirectory)) {
LOG.debug("Skipping excluded directory: ", rootProjectDirectory);
return;
}
final HybrisProjectService hybrisProjectService = ApplicationManager.getApplication().getService(HybrisProjectService.class);
if (hybrisProjectService.hasVCS(rootProjectDirectory)) {
LOG.info("Detected version control service " + rootProjectDirectory.getAbsolutePath());
vcs.add(rootProjectDirectory.getCanonicalFile());
}
if (hybrisProjectService.isHybrisModule(rootProjectDirectory)) {
LOG.info("Detected hybris module " + rootProjectDirectory.getAbsolutePath());
moduleRootMap.get(HYBRIS).add(rootProjectDirectory);
return;
}
if (hybrisProjectService.isConfigModule(rootProjectDirectory)) {
LOG.info("Detected config module " + rootProjectDirectory.getAbsolutePath());
moduleRootMap.get(HYBRIS).add(rootProjectDirectory);
return;
}
if (!acceptOnlyHybrisModules) {
if (!rootProjectDirectory.getAbsolutePath().endsWith(HybrisConstants.PLATFORM_MODULE)
&& !FileUtil.filesEqual(rootProjectDirectory, rootDirectory)
&& (hybrisProjectService.isGradleModule(rootProjectDirectory) || hybrisProjectService.isGradleKtsModule(rootProjectDirectory))
&& !hybrisProjectService.isCCv2Module(rootProjectDirectory)) {
LOG.info("Detected gradle module " + rootProjectDirectory.getAbsolutePath());
moduleRootMap.get(NON_HYBRIS).add(rootProjectDirectory);
// return;
}
if (hybrisProjectService.isMavenModule(rootProjectDirectory)
&& !FileUtil.filesEqual(rootProjectDirectory, rootDirectory)
&& !hybrisProjectService.isCCv2Module(rootProjectDirectory)
) {
LOG.info("Detected maven module " + rootProjectDirectory.getAbsolutePath());
moduleRootMap.get(NON_HYBRIS).add(rootProjectDirectory);
// return;
}
if (hybrisProjectService.isPlatformModule(rootProjectDirectory)) {
LOG.info("Detected platform module " + rootProjectDirectory.getAbsolutePath());
moduleRootMap.get(HYBRIS).add(rootProjectDirectory);
} else if (hybrisProjectService.isEclipseModule(rootProjectDirectory)
&& !FileUtil.filesEqual(rootProjectDirectory, rootDirectory)
) {
LOG.info("Detected eclipse module " + rootProjectDirectory.getAbsolutePath());
moduleRootMap.get(NON_HYBRIS).add(rootProjectDirectory);
// return;
}
if (hybrisProjectService.isCCv2Module(rootProjectDirectory)) {
LOG.info("Detected CCv2 module " + rootProjectDirectory.getAbsolutePath());
moduleRootMap.get(CCV2).add(rootProjectDirectory);
final var name = rootProjectDirectory.getName();
if (name.endsWith(HybrisConstants.CCV2_JS_STOREFRONT_NAME) || name.endsWith(HybrisConstants.CCV2_DATAHUB_NAME)) {
// faster import: no need to process sub-folders of the CCv2 js-storefront and datahub directories
return;
}
}
}
scanForSubdirectories(moduleRootMap, excludedFromScanning, acceptOnlyHybrisModules, rootProjectDirectory.toPath(), progressListenerProcessor);
}