kotlin - 在我的 build.gradle.kts 文件中将一些代码片段从 groovy 转换为 kotlin KTS

标签 kotlin groovy build.gradle gradle-kotlin-dsl

我的 build.gradle.kts 中有以下代码。我现在已经迁移到 kotlin KTS。并需要帮助将此代码从 groovy 翻译为 kotlin 脚本。

fun getVersionFromGit(fallback: String): String {
    return try {
        if (Os.isFamily(Os.FAMILY_WINDOWS)) {
            "git describe --tags --abbrev=0 --match "v*.*.*"".execute().text.substring(1).trim()
        } else {
            ["sh , "-c"", "git describe --tags --abbrev=0 --match "v*.*.*""].execute().text.substring(1).trim()
        }
    } catch (e: Throwable) {
        println("Skipping git version")
        fallback
    }
}

我收到错误

意外的标记(使用“;”分隔同一行上的表达式) 不支持的[文字前缀和后缀] 未解析的引用:v 需要一个元素

提前非常感谢

更新:

fun getVersionFromGit(fallback: String): String {
    return try {
        if (Os.isFamily(Os.FAMILY_WINDOWS)) {
            "git describe --tags --abbrev=0 --match \"v*.*.*\"".execute().text.substring(1).trim()
        } else {
            listOf("sh , \"-c\"", "git describe --tags --abbrev=0 --match \"v*.*.*\"").execute().text.substring(1).trim()
        }
    } catch (e: Throwable) {
        println("Skipping git version")
        fallback
    }
}

最新错误是未解析的引用:执行

最佳答案

看起来您没有正确转义字符串中的引号。

“git 描述 --tags --abbrev=0 --match “v*.*.*””

应该是

“git 描述 --tags --abbrev=0 --match\"v*.*.*\""

关于kotlin - 在我的 build.gradle.kts 文件中将一些代码片段从 groovy 转换为 kotlin KTS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72913327/

相关文章:

constructor - 在 Kotlin 初始化程序中使用 'this' - 替代解决方案,还是可以安全忽略?

android - Jetpack Compose,TextField中的自定义光标位置

java.lang.NullPointerException : Attempt to invoke interface method 'int java.lang.Comparable.compareTo(java.lang.Object)' on JSoup Library

grails - 使用Groovy检查对象是否在集合中

android - Gradle : adding assets folder dynamically

android - Firebase 核心依赖 : Program type already present: android. support.v4.app.INotificationSideChannel

kotlin - Gradle Kotlin DSL Jar.from() 的使用

java - 如何在 groovy 中收集列表的相似项目

android - 在 Gradle 插件中哪里可以找到指定类的所有属性和方法?

maven - 将项目构建的jar安装到本地Maven存储库