# ComposeEventTrackPlugin **Repository Path**: mayundaze/compose-event-track-plugin ## Basic Information - **Project Name**: ComposeEventTrackPlugin - **Description**: 新版 kotlin 对点击事件进行 插桩 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-12 - **Last Updated**: 2026-02-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 1. 使用方法 - 发布到本机 mavenLocal(自动版本,Jar 自动命名) - ./gradlew :cet-kotlin-plugin:publishToMavenLocal :cet-gradle-plugin:publishToMavenLocal -PuseLocalCetPlugin=false - - 在消费方(app 模块或另一项目)启用使用本地仓库的插件 - 在该项目添加 mavenLocal() 到仓库列表 - 启用开关并构建: - ./gradlew :app:assembleDebug -PuseLocalCetPlugin=true - 编译器插件坐标 local:cet-kotlin-plugin:${cetKcpVersion} 会从本机 ~/.m2/repository/local 解析 其中包含 cet-gradle-plugin/1.0.1/cet-gradle-plugin-1.0.1.jar 和 cet-kotlin-plugin/1.0.1/cet-kotlin-plugin-1.0.1.jar 这样不需要你手动把 jar 放到 mavenLocal 路径,发布任务会自动生成并发布,app 作为消费方直接从 mavenLocal 获取 ### 2. 项目库发布到 mavenLocal 的完整指南 #### 2.1 整体流程概述 您的项目采用了一种优雅的方式,通过 Gradle 的 Maven Publish 插件自动将库发布到本地 Maven 仓库,避免了手动复制 jar 文件的繁琐操作。 #### 2.2 核心配置要素 ##### 1. 模块级配置 ([build.gradle.kts](file:///Users/wb-zhaoyaze/Home/Project/AndroidProject/ComposeEventTrackPlugin/build.gradle.kts)) **cet-kotlin-plugin 模块配置:** ```kotlin plugins { `java-gradle-plugin` kotlin("jvm") alias(libs.plugins.google.ksp) id("maven-publish") // 关键:启用 Maven 发布插件 } // 设置组名和版本 group = "local" version = providers.gradleProperty("cetKcpVersion").orElse("1.0.1").get() // 配置 Jar 包名称 tasks.named("jar") { archiveBaseName.set("cet-kotlin-plugin") archiveVersion.set(project.version.toString()) } ``` **cet-gradle-plugin 模块配置:** ```kotlin plugins { `java-gradle-plugin` kotlin("jvm") id("maven-publish") // 同样启用发布插件 } group = "local" version = providers.gradleProperty("cetGradleVersion").orElse("1.0.1").get() // 完整的发布配置 publishing { publications { create("cetGradle") { from(components["java"]) // 发布 Java 组件 groupId = project.group.toString() artifactId = "cet-gradle-plugin" version = project.version.toString() } } repositories { mavenLocal() // 发布到本地 Maven 仓库 } } ``` ##### 2. 项目级配置 **settings.gradle.kts - 确保包含所有模块:** ```kotlin rootProject.name = "ComposeEventTrackPlugin" include(":app") include(":cet-gradle-plugin") include(":cet-kotlin-plugin") include(":cet-core") ``` **gradle.properties - 版本管理:** ```properties cetKcpVersion=1.0.1 cetGradleVersion=1.0.1 useLocalCetPlugin=true ``` #### 2.3 发布命令 ##### 方法一:直接发布命令(推荐) ```bash # 发布两个插件到本地 Maven 仓库 ./gradlew :cet-kotlin-plugin:publishToMavenLocal :cet-gradle-plugin:publishToMavenLocal -PuseLocalCetPlugin=false ``` ##### 方法二:使用本地构建脚本 ```bash # 执行预定义的构建脚本 ./build_local.sh ``` #### 2.4 发布后的文件位置 发布成功后,文件会被放置在: ``` ~/.m2/repository/local/ ├── cet-gradle-plugin/ │ └── 1.0.1/ │ ├── cet-gradle-plugin-1.0.1.jar │ └── cet-gradle-plugin-1.0.1.pom └── cet-kotlin-plugin/ └── 1.0.1/ ├── cet-kotlin-plugin-1.0.1.jar └── cet-kotlin-plugin-1.0.1.pom ``` #### 2.5 使用方式 在消费方项目中启用本地插件: ```kotlin // app/build.gradle.kts val useLocalCetPlugin = (project.findProperty("useLocalCetPlugin") as? String)?.toBoolean() ?: false buildscript { repositories { mavenLocal() // 关键:添加本地仓库 google() mavenCentral() } dependencies { if (useLocal) { // 使用本地发布的插件 classpath("local:cet-gradle-plugin:${project.findProperty("cetGradleVersion") ?: "1.0.1"}") } } } // 应用插件 if (useLocalCetPlugin) { apply(plugin = "cet-plugin") } ``` #### 2.6 完整使用流程 1. **发布插件到本地仓库:** ```bash ./gradlew :cet-kotlin-plugin:publishToMavenLocal :cet-gradle-plugin:publishToMavenLocal -PuseLocalCetPlugin=false ``` 2. **在消费方启用并构建:** ```bash ./gradlew :app:assembleDebug -PuseLocalCetPlugin=true ``` #### 2.7 优势特点 - ✅ **自动化程度高**:无需手动复制 jar 文件 - ✅ **版本管理清晰**:通过 gradle.properties 统一管理版本号 - ✅ **开发调试友好**:快速迭代,即时生效 - ✅ **配置简洁**:标准的 Gradle Maven Publish 插件用法 - ✅ **环境隔离**:通过参数控制是否使用本地插件 这种方式特别适合插件开发的快速迭代场景,让开发者能够专注于功能实现而不是部署流程。