@Transient
  public void updateFromMavenConfig(@NotNull List<VirtualFile> mavenRootProjects) {
    if (mavenRootProjects.isEmpty() || !useMavenConfig) return;
    mavenConfigCache = null;

    VirtualFile file = mavenRootProjects.get(0);
    MavenConfig config = MavenConfigParser.parse(file.isDirectory() ? file.getPath() : file.getParent().getPath());
    mavenConfigCache = config;
    if (config == null) return;

    boolean needUpdate;
    MavenExecutionOptions.ChecksumPolicy checksumConfig = requireNonNullElse(config.getChecksumPolicy(),
                                                                             MavenExecutionOptions.ChecksumPolicy.NOT_SET);
    needUpdate = !Objects.equals(checksumConfig, checksumPolicy);
    checksumPolicy = checksumConfig;

    MavenExecutionOptions.FailureMode failureBehaviorConfig = requireNonNullElse(config.getFailureMode(),
                                                                                 MavenExecutionOptions.FailureMode.NOT_SET);
    needUpdate = needUpdate || !Objects.equals(failureBehavior, failureBehaviorConfig);
    failureBehavior = failureBehaviorConfig;

    MavenExecutionOptions.LoggingLevel outputLevelConfig = requireNonNullElse(config.getOutputLevel(),
                                                                              MavenExecutionOptions.LoggingLevel.INFO);
    needUpdate = needUpdate || !Objects.equals(outputLevel, outputLevelConfig);
    outputLevel = outputLevelConfig;

    Boolean offlineConfig = config.hasOption(OFFLINE);
    needUpdate = needUpdate || !Objects.equals(workOffline, offlineConfig);
    workOffline = offlineConfig;

    Boolean stackTracesConfig = config.hasOption(ERRORS);
    needUpdate = needUpdate || !Objects.equals(printErrorStackTraces, stackTracesConfig);
    printErrorStackTraces = stackTracesConfig;

    Boolean updateSnapshotsConfig = config.hasOption(UPDATE_SNAPSHOTS);
    needUpdate = needUpdate || !Objects.equals(alwaysUpdateSnapshots, updateSnapshotsConfig);
    alwaysUpdateSnapshots = updateSnapshotsConfig;

    Boolean nonRecursiveConfig = config.hasOption(NON_RECURSIVE);
    needUpdate = needUpdate || !Objects.equals(nonRecursive, nonRecursiveConfig);
    nonRecursive = nonRecursiveConfig;

    String threadsConfig = StringUtil.nullize(config.getOptionValue(THREADS));
    needUpdate = needUpdate || !Objects.equals(StringUtil.nullize(threads), threadsConfig);
    threads = threadsConfig;

    if (needUpdate) {
      changed(false);
    }
    mavenConfigCache = config;
  }
@Transient
  public void updateFromMavenConfig(@NotNull List<VirtualFile> mavenRootProjects)