You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin项目与Gradle之间共享Datasource.kt代码?

解决Kotlin Appium项目中共享Datasource给代码和Gradle构建脚本的问题

核心思路

把Datasource.kt放到Gradle的buildSrc目录中——这个目录的代码会被Gradle自动编译并加入构建脚本的类路径,同时通过配置让主项目代码也能依赖这个目录的编译产物,实现单一数据源。

具体步骤

1. 构建buildSrc目录结构

在项目根目录创建如下结构:

项目根目录
├── buildSrc
│   ├── build.gradle.kts
│   └── src
│       └── main
│           └── kotlin
│               └── [你的包路径]
│                   └── Datasource.kt
├── [你的主Appium模块,比如app]
│   └── build.gradle.kts
└── settings.gradle.kts

把你现有的Datasource.kt移动到buildSrc/src/main/kotlin/[你的包路径]下,删除Gradle脚本和主项目中的重复实现。

2. 配置buildSrc的构建脚本

编辑buildSrc/build.gradle.kts,确保它能生成可被主项目依赖的jar包:

plugins {
    `kotlin-dsl`
    `java-library`
}

repositories {
    mavenCentral()
}

dependencies {
    implementation(kotlin("stdlib"))
}

java {
    sourceCompatibility = JavaVersion.VERSION_11 // 匹配你项目的Java版本
    targetCompatibility = JavaVersion.VERSION_11
}

3. 让主项目依赖buildSrc的产物

在你的主Appium模块(比如app/build.gradle.kts)中添加依赖,确保项目代码能访问Datasource:

dependencies {
    // 依赖buildSrc编译出的jar
    implementation(files(project(":buildSrc").tasks.named("jar").get().outputs.files))
    // 保留你原有的其他依赖(Appium、JUnit等)
    implementation("io.appium:java-client:8.5.1")
    testImplementation("org.junit.jupiter:junit-jupiter-api:5.9.2")
    // ...
}

4. 验证引用

  • Gradle脚本中:直接导入Datasource的包路径即可使用,和你之前的写法一致:
    import [你的包路径].Datasource
    
    tasks.test {
        useJUnitPlatform {
            if (!Datasource.hasSomeThings) {
                println("Gradle excluding \"SomeThings\" tests tag")
                excludeTags("SomeThings")
            }
        }
    }
    
  • 项目代码中:同样导入包路径后使用:
    import [你的包路径].Datasource
    
    if (Datasource.getValue("key").isFeatureEnabled()) {
        // 检查对应按钮是否存在
    }
    

注意事项

  • Datasource.kt必须是纯Kotlin代码,不能依赖Gradle特有的API(比如org.gradle.api下的类),否则主项目代码会出现依赖错误。
  • 确保buildSrc中使用的Kotlin版本和主项目一致,避免兼容性问题。

内容的提问来源于stack exchange,提问作者Andrei Nagy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:10:19