fun configureAfterImport()

in src/com/intellij/idea/plugin/hybris/project/configurators/AntConfigurator.kt [139:203]


    fun configureAfterImport(
        project: Project,
        hybrisProjectDescriptor: HybrisProjectDescriptor,
        allModules: List<ModuleDescriptor>
    ): List<() -> Unit> {
        val platformDescriptor = hybrisProjectDescriptor.platformHybrisModuleDescriptor
        val extHybrisModuleDescriptors = mutableListOf<ModuleDescriptor>()
        val customHybrisModuleDescriptors = mutableListOf<ModuleDescriptor>()

        for (descriptor in allModules) {
            when (descriptor) {
                is YPlatformExtModuleDescriptor -> extHybrisModuleDescriptors.add(descriptor)
                is YCustomRegularModuleDescriptor -> customHybrisModuleDescriptors.add(descriptor)
            }
        }

        val antInstallation = createAntInstallation(platformDescriptor)
            ?: return emptyList()

        val classPaths = createAntClassPath(platformDescriptor, extHybrisModuleDescriptors)
        val antConfiguration = AntConfigurationBase.getInstance(project).apply {
            isFilterTargets = true
        }

        return listOf {
            val antBuildFiles = mutableListOf<Pair<AntBuildFileBase, List<String>>>()

            findBuildFile(antConfiguration, platformDescriptor)
                ?.apply {
                    metaTargets
                        .map { ExecuteCompositeTargetEvent(it) }
                        .filter { antConfiguration.getTargetForEvent(it) == null }
                        .forEach { antConfiguration.setTargetForEvent(this, it.metaTargetName, it) }
                }
                ?.let { it to desirablePlatformTargets }
                ?.let { antBuildFiles.add(it) }

            if (hybrisProjectDescriptor.isImportCustomAntBuildFiles) {
                customHybrisModuleDescriptors
                    .mapNotNull { findBuildFile(antConfiguration, it) }
                    .map { it to desirableCustomTargets }
                    .forEach { antBuildFiles.add(it) }
            }

            antBuildFiles.forEach { (antBuildFile, desirabTargets) ->
                registerAntInstallation(hybrisProjectDescriptor, antInstallation, classPaths, antBuildFile)

                ReadAction
                    .nonBlocking<EditPropertyContainer> {
                        val allOptions = antBuildFile.allOptions

                        EditPropertyContainer(allOptions).apply {
                            TARGET_FILTERS[this] = getFilteredTargets(antConfiguration, antBuildFile, desirabTargets)
                        }
                    }
                    .finishOnUiThread(ModalityState.defaultModalityState()) {
                        it.apply()
                    }
                    .submit(AppExecutorUtil.getAppExecutorService())
            }

            saveAntInstallation(antInstallation)
            removeMake(project)
        }
    }