private[extractors] def extract()

in extractor/src/main/scala/org/jetbrains/sbt/extractors/ProjectExtractor.scala [55:110]


  private[extractors] def extract(implicit state: State): ProjectData = {

    val resolvers = allResolvers.collect {
      case repo: MavenRepository => ResolverData(repo.name, repo.root)
    }.toSet

    /**
     * Ignore "jmh" configuration.<br>
     * This is a dirty WORKAROUND for https://youtrack.jetbrains.com/issue/SCL-13127<br>
     * "jmh" configuration is defined in some strange way:<br>
     *  - it extends Test configuration
     *  - it also assigns compilation output to Compile configuration compilation output
     * {{{
     *   val Jmh = config("jmh") extend Test
     *   classDirectory := (classDirectory in Compile).value
     * }}}
     *
     * It should be fine to ignore this configuration as we don't support it natively in IntelliJ anyway.
     *
     * @see https://github.com/sbt/sbt-jmh
     * @see https://github.com/sbt/sbt-jmh/blob/main/plugin/src/main/scala/pl/project13/scala/sbt/JmhPlugin.scala
     */
    def isJmhConfiguration(config: sbt.Configuration): Boolean =
      config.name.toLowerCase == "jmh"

    val compileConfigurationsData = sourceConfigurations.flatMap(extractConfiguration(Compile.name, webAssetsDirsToExclude))
    val testConfigurationData = testConfigurations
      .filterNot(isJmhConfiguration)
      .flatMap(extractConfiguration(Test.name))
    val configurations = mergeConfigurations(compileConfigurationsData ++ testConfigurationData)
    ProjectData(
      projectRef.id,
      projectRef.build,
      name,
      organization,
      version,
      base,
      packagePrefix,
      basePackages,
      target,
      configurations,
      extractJava,
      extractScala,
      compileOrder.toString,
      dependencies,
      resolvers,
      play2,
      settingData,
      taskData,
      commandData,
      mainSourceDirectories,
      testSourceDirectories,
      // This is a default value and will be changed later, when sources are generated.
      generatedManagedSources = false
    )
  }