An internal descriptor-based implementation for analysis-kotlin-api. This implementation is also known as K1 or "the old compiler".
Contains no stable public API and must not be used by anyone directly, only via analysis-kotlin-api.
Can be added as a runtime dependency by the runner.
The .jar
produced by this project shadows all dependencies. There are several reasons for it:
- Some of the artifacts Dokka depends on, like
com.jetbrains.intellij.java:java-psi
, are not published to Maven Central, so the users would need to add custom repositories to their build scripts. - There are many intertwining transitive dependencies of different versions, as well as direct copy-paste, that can lead to runtime errors due to classpath conflicts, so it's best to let Gradle take care of dependency resolution, and then pack everything into a single jar in a single place that can be tuned.
- The
compiler
andide
subprojects are internal details that are likely to change, so packing everything into a single jar provides some stability for the CLI users, while not exposing too many internals. Publishing the compiler, ide and other subprojects separately would also make it difficult to refactor the project structure.