12.4.10 从命令行运行 KSP
3 分钟阅读
12.4.10 从命令行运行 KSP
大多数项目通过 Gradle 插件使用 KSP,它会在编译期间自动运行 KSP。你也可以从命令行使用 KSP,但通常只在与其他构建系统集成、开发处理器、测试或调试时才会这么做。
由于 KSP 是一个 JVM 应用,请使用 java 命令从命令行启动 KSP。提供 classpath 和任何必要的参数:
| |
| 参数 | 说明 |
| <classpath> | KSP 运行时 JAR 及其依赖的路径。 |
| <mainclass> | 平台特定的 KSP 入口点之一。 |
| <options> | KSP 的命令行选项。 |
| <processor> | 处理器 JAR 的路径。 |
Classpath
与 Gradle 插件不同,java 命令不会自动解析依赖。你必须在 classpath 上提供 KSP 运行时 JAR 及其依赖。
从 KSP 发行页面下载 artifacts.zip。该归档包含所需的 KSP JAR 文件:
symbol-processing-aa-2.3.10.jarsymbol-processing-common-deps-2.3.10.jarsymbol-processing-api-2.3.10.jar
你还必须包含来自 Maven 仓库的以下运行时依赖:
主类
由于 KSP 是 JVM 应用,你必须指定要启动的主类。KSP 为每个受支持的平台提供了不同的入口点:
| 入口点 | 平台 |
| KSPJvmMain | Kotlin/JVM 与 Android |
| KSPJsMain | Kotlin/JS |
| KSPNativeMain | Kotlin/Native 目标,例如 iOS、macOS、Linux 和 Windows。 |
| KSPCommonMain | Kotlin Multiplatform 项目中的公共编译。 |
用 java 启动 KSP 时,请指定完全限定的类名。例如:
| |
下面的例子使用 KSPJvmMain 为 JVM 目标运行 KSP:
| |
选项
从命令行运行时,KSP 需要以下选项:
| 选项 | 说明 |
| -language-version=<version> | 项目中使用的 Kotlin 语言版本。 |
| -api-version=<version> | Kotlin API 版本。 |
| -jvm-target=<version> | 目标 JVM 版本。 |
| -module-name=<name> | 模块名称。 |
| -source-roots=<paths> | 源根目录。多个目录请使用以冒号分隔的列表。 |
| -project-base-dir=<path> | 项目根目录。 |
| -output-base-dir=<path> | KSP 输出的基础目录。 |
| -caches-dir=<path> | KSP 缓存目录。 |
| -java-output-dir=<path> | 生成的 Java 文件目录。 |
| -class-output-dir=<path> | 生成的 class 文件目录。 |
| -kotlin-output-dir=<path> | 生成的 Kotlin 文件目录。 |
| -resource-output-dir=<path> | 生成的资源文件目录。 |
| <processor> | 处理器 classpath。 |
其他有用的选项
-libraries=<path>:用于解析源文件所引用依赖的 classpath。通常是该模块的编译 classpath。-jdk-home=<path>:JDK 主目录。当处理器解析 Java 符号并需要访问 Java 标准库时使用。-friends=<path>:当前模块的 friend 模块的 classpath。这通常是该模块的 friend classpath。更多信息请参阅 Friend 模块。
提示: KSP 还支持
-Dksp.loggingJVM 系统属性,用于设置日志级别。有效值为error、warn或warning、info和debug。默认值是warn。KSP 会把不支持的值视为warn。
要查看完整的选项列表,请运行以下命令:
| |