问题标签 [kotlin-dsl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
358 浏览

postgresql - 如何使用 Kotlin 的 Ktorm 对自定义 Postgres“对象类型”执行 WHERE 子句操作,避免“PSQLException:错误:运算符不存在”

在对自定义 Postgres“对象类型”执行 WHERE 子句操作时,我结束了以下 PSQLException。

  • 语言:科特林。
  • ORM 库Ktorm ORM

例外

我在这里遵循了 Ktorm 官方指南,但是没有提到自定义 Postgres 类型。任何指针/帮助将不胜感激。请参阅下面的代码以重现:

谢谢你。

  1. 会产生上述异常的示例测试
  1. 架构
  1. Kotlin 的 Ktorms 实体和绑定
0 投票
0 回答
301 浏览

variables - 如何使用变量拆分基于 kotlin 的大型 Gradle 构建文件?

我有一个大的 gradle.build.kts 文件,我正在尝试使用 apply(from = "xxx") 将它分成更小的部分(如果存在更好的解决方案,我愿意接受)。

问题是我遇到了一个问题,我的一个脚本无法处理变量。这是示例代码:

构建.gradle.kts

build.gradle.test.kts

这两个文件都在根项目文件夹中。

输出...

是否可以在应用脚本中包含变量/值?
如果不是,这似乎是一个非常糟糕的限制。

这些帖子很接近,但不回答可变问题:Is there a way to split/factor out common parts of Gradle build

另外,我已经阅读了 kotlin-dsl 入门书,但没有看到任何与此问题相关的内容,或者我可能错过了它。其余代码工作正常,所以我从这个问题中删除了它。
任何帮助表示赞赏,在此先感谢。

版本信息:
Gradle 6.8
Kotlin:1.4.20
Groovy:2.5.12
Ant:Apache Ant(TM) 版本 1.10.9 编译于 2020 年 9 月 27 日
JVM:11.0.2 (Oracle Corporation 11.0.2+9)
操作系统:Windows 10 10.0 amd64

0 投票
1 回答
470 浏览

kotlin - 如何在 buildSrc 模块中导入 KotlinMultiplatformExtension?

我正在开发一个 kotlin 多平台项目,它有一堆模块。

我写了一个扩展函数,打算在每个模块中使用。扩展函数扩展了KotlinMultiplatformExtension类的功能。现在该代码在每个模块的build.gradle.kts文件中重复。所以我认为将代码移动到buildSrc moudle 并在任何地方重用会很棒。

问题是buildSrc模块内部KotlinMultiplatformExtension没有解决。

KotlinMultiplatformExtension 未解决

我的buildSrc/build.gradle.kts

如果我右键单击KotlinMultiplatformExtensionsomeModule /build.gradle.kts

它需要我:

在此处输入图像描述

所以我猜想在buildSrc/build.gradle.kts中添加一个依赖项应该会有所帮助:

但是添加该结果会导致错误:

有什么想法KotlinMultiplatformExtension可以在buildSrc中使用吗?

0 投票
1 回答
36 浏览

android - 让两种构建风格在 Gradle Kotlin DSL 中使用相同的 res 文件?

我有 3 种名为FlavorA, FlavorB, FlavorC

FlavorA 使用公共资源,所以在它的源集中没有什么额外的,FlavorB 和 FlavorC 使用相同的资源,但它与公共资源不同,所以它们都有相同的strings.xml, styles.xml文件。B 和 C 之间的唯一区别是 applicationId 因此我只希望 FlavorC 使用 FlavorB 的 res 文件,而不是在每次更改时复制和粘贴 strings.xml、styles.xml 文件。这可能吗?

包结构是这样的:

0 投票
1 回答
576 浏览

kotlin - 如何从 kotlin dsl 的根目录应用插件

jacoco-report.gradle.kts我在项目的根目录中有一个名为(ProjectName/jacoco-report.gradle.kts)的插件。现在我想在子模块的插件块中添加这个插件。

有人可以帮我如何应用这个插件。在迁移到 kotlin dsl 之前,我曾经apply from: rootProject.file("jacoco-report.gradle")在 groovy gradle 文件中应用这个插件。

0 投票
0 回答
80 浏览

json - Kotlin DSL 用于存储配置而不是 JSON

在阅读了 Kotlin,尤其是 Kotlin DSL 之后,这似乎是替换 JSON 配置文件的好方法。

我有一个接受配置文件参数(资源)的服务,例如--config='path/to/configX.json'.
有许多不同的配置可以为不同的客户端定制和部署不同的服务。
JSON 文件虽然简单,但冗长、重复且容易出错。

Kotlin DSL 似乎是简化这些配置、减少重复(使用构建器函数)和内置“代码”验证的好方法(不像 JSON 需要自定义验证或如果出现错误则反序列化失败)。

但是,我没有看到在服务启动时从 Kotlin 脚本加载不同配置的示例(例如:)--config='path/to/configX.kts'
这是开箱即用的东西吗?
会被推荐的东西还是滥用 DSL?

简单的例子:

0 投票
1 回答
63 浏览

kotlin - Kotlin lambdas with receivers:寻求澄清我的心智模型

我正在尝试为带有 Kotlin 接收器的 lambdas 以及 DSL 的工作原理建立一个良好的心智模型。简单的很容易,但我的心智模型会因复杂的而分崩离析。

第1部分

假设我们有一个changeVolume如下所示的函数:

我将大声描述此功能的方式如下:

函数 changeVolume 采用必须适用于 Int(接收器)的 lambda。此 lambda 不接受任何参数,并且必须返回一个 Int。根据 10.lambdaPassedToFunction() 表达式,传递给 changeVolume 的 lambda 将应用于 Int 10。

然后我会使用类似下面的方法调用这个函数,突然之间我们有了一个小型 DSL 的开始:

这很有意义,因为传递的 lambda 直接适用于 any Int,我们的函数只是在内部使用它(比如10.plus(100), or 10.times(2)

第2部分

但举一个更复杂的例子:

在这里,我们再次看到了一个看似简单的函数,我很想向朋友描述它为“传递一个可以有一个UserConfig类型作为接收器的 lambda,它会简单地将该 lambda 应用于user1”。

但请注意,我们可以将看似非常奇怪的 lambdas 传递给该函数,它们会正常工作:

对上面的调用config工作正常,并且会同时改变agehasDog属性。然而,它不是可以按照函数暗示的方式应用的 lambda(user1.lambda()即 lambda 中的 2 行没有循环)。

官方文档用以下方式定义了这些带有接收器的 lambda:“该类型A.(B) -> C表示可以在接收器对象上调用的A函数,其参数为B并返回值C。”

我知道 theage和 the可以单独hasDog应用于,如 in ,并且语法糖允许我们在 lambda 声明中省略and 。但是,我怎样才能协调语法和这两者都将按顺序运行的事实!函数声明中的任何内容都不会让我相信将一一应用上的事件。user1 user1.age = 42this.agethis.hasDogconfig()user1

那只是“它是怎样的”,以及某种语法糖,我应该学会这样阅读它们(我的意思是我可以看到它在做什么,我只是不太从语法中得到它),还是还有更多正如我想象的那样,这一切都通过我不太了解的其他魔法以一种美丽的方式结合在一起?

0 投票
0 回答
50 浏览

gradle - 如何使用 kotlin dsl 从子项目 build.gradle 访问根 build.gradle 文件中定义的变量?

root build.gradle 中定义的变量 fille

我想访问子项目的 build.gradle.ktl 文件中的变量 a 。注意子项目的 gradle 文件使用 kotlin dsl。

0 投票
1 回答
54 浏览

html - Using "property" in HTML meta data with kotlin DSL

Hey how can i use html content like:

<meta property="og:locale" content="en"/>

with the Kotlin HTML Type Safe builder? I cannot find something like the property variable in the meta function

0 投票
1 回答
116 浏览

kotlin - Kotlin BuildType 'XYZ': id 'XYZ' is already used in BuildType(uuid='', id='XYZ', name='Deploy to envr') 错误

我试图重构包含 TeamCity 管道配置的 Kotlin 文件。但是,我不断收到以下错误:

BuildType 'KotlinExperiments_DeployToEnvironment': id 'KotlinExperiments_DeployToEnvironment' 已在 BuildType 中使用(uuid='', id='KotlinExperiments_DeployToEnvironment', name='Deploy to test')

我试图动态分配一个 ID,但这似乎不起作用。以下是相关文件的链接:

我错过了什么?