问题标签 [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.
kotlin - Kotlin DSL:几个域和它们之间的引用
我学习 kotlin DSL 并尝试描述我的领域对象。例如,我在 github ( VillageDSL ) 上阅读了非常简单的示例,发现它们非常有用:
或者
和互联网上的其他例子。
所有这些示例都展示了如何在单个空间中描述单个域。但真正的域更复杂,它们之间有联系。我希望 DSL 用户能够通过自动完成、验证等从另一个 DSL 引用对象。
I. 例如,我有字典:
我想参考这些书:
我可以在运行时进行这样的验证:
整个模型将保持一致,但在设计时用户必须手动输入 ISBN ( $.shelf.book.isbn
)。
二、另一种变体。我在字典中这样描述每一本书:
这个变体对管理这本词典的用户不太友好,但对参考这些书的用户更友好:
可以在设计时使用自动完成和验证工作。
三、我可以想象一些组合变体:字典像变体“I”($.books.book
)一样管理,然后是代码生成的结构,如变体“II”(val book0321712943 = ... val book9781680507935 ...
)。这种代码生成也是手动/中间操作,它不允许在没有项目构建等情况下立即使用字典实体。
所有这些变体都有明显的缺点......
所以我的问题是关于描述相关 DSL 的最佳实用方法和模板。
android - 如何在 AGP 7.x 中定义新的 sourceSet 类型
我正在尝试在build.gradle.kts
AGP 7.0.2 中实现这种结构buildSrc
就像内置的jniLibs
.
经过一番研究,我从protobuf-gradle-plugin中找到了一个解决方案并转译为 Kotlin (buildSrc/src/main/kotlin/com/example/ExamplePlugin.kt):
但为了让 DSL 按预期工作,应将以下代码添加到buildSrc/src/main/kotlin/com/example/AndroidSourceSetExtension.kt
:
然后在app/build.gradle.kts
:
我还没有测试它是否真的有效。只需运行assembleDebug
没有错误。但
- 它实际上创建了 a
SourceDirectorySet
而不是AndroidSourceDirectorySet
, byproject.objects.sourceDirectorySet
。那么我该如何创建AndroidSourceDirectorySet
呢? - 虽然我已经应用了插件,但我必须导入
com.example.pythonLibs
,所以如何避免这种情况。 - 它仅适用于闭包语法 as
pythonLibs { srcDir() }
,而不适用于val
语法 aspythonLibs.srcDir()
因为我不知道如何使用val
类型成员扩展接口。
android - Android Studio 创建 buildSrc 但在 build.gradle.kts 实现中找不到
毕业版本
buildSrc/src/build.gradle.kts
但 implementation
没有找到
我克隆 github 线圈项目它可以运行并且可以找到实现
我需要帮助
kotlin - 在 kotlin 中,这种语法是什么:“fun ClassName.funcName(): (Type ) -> Type = {fun body}”
编辑:它是什么以及它是如何工作的?这是一种 kotlin dsl 语言。
嗯,这是我找到的实现之一,还可以查看此链接的具体语法:https ://dzone.com/articles/the-complete-custom-gradle-plugin-building-tutoria
如果您将其称为“ .filter(...)”中的参数,“(文件)”语法中会发生什么,它会自动接收参数吗?
android - Gradle Matching fallbacks 使构建速度变慢
构建 android 多模块项目时遇到问题。
我使用 kotlin 脚本进行构建,例如自爆。
这个模块是一个动态特性模块。该动态功能模块取决于应用程序模块。
当我在应用程序模块中选择 b 变体时,Gradle 也会运行“a”任务。
它使构建缓慢。这是正常的构建过程吗?(我认为应该只运行任务“b”)。
kotlin - grpc kotlin 插件不生成 dsl 代码
我有一个使用 gradle 和 kotlin DSL 的现有项目。我已经使用 gradle build 设置了 protobuf 代码自动生成。
生成了 Kotlin grpc 代码,我可以使用流和协程来实现我的后端。
但是没有生成 kotlin DSL 代码。所以我目前只剩下使用详细的样板驱动构建器模式来创建我的对象。
下面是我的 protobuf 插件设置。
我在这里错过了什么吗?
android - Android Studio:在创建新模块时添加 build.gradle.kts(Kotlin DSL 脚本)
最近我已将所有构建脚本迁移到 Kotlin DSL。
当我在 Android Studio 中添加一个新模块时,我得到了用 Groovy 编写的自动生成的构建脚本。
如何更新 Android Studio 新模块模板以使用用 Kotlin DSL 编写的自动生成的构建脚本?
谢谢
maven - 如何在 TeamCity 中为 Kotlin DSL 项目指定 Maven settings.xml
因此,您可以settings.xml
在 TeamCity 中拥有 Maven 项目,Administration -> Project -> Maven Settings
.
您还可以将项目配置存储为 Kotlin DSL,它基本上是存储.teamcity
在 VCSROOT 下的 Maven 项目。它甚至可以使用外部库作为依赖项。
但是,这个 Maven 项目不会使用settings.xml
上述任何内容,因此它不能进入受 HTTP auth 保护的内部 Maven 存储库。有没有办法settings.xml
为 Kotlin DSL 配置项目指定文件?是否可以将该文件与 pom.xml 放在一起?在这种情况下,它会从相应的 TeamCity 选项卡中获取代币吗?
android - Android Jetpack Navigation Kotlin DSL 是否支持具有多个堆栈的底部导航?
我正在使用最新的 Jetpack 导航,并原生支持多堆栈进行底部导航:https ://medium.com/androiddevelopers/navigation-multiple-back-stacks-6c67ba41952f ,它工作正常。对我来说唯一的限制是我必须在 navigation.xml 中定义所有导航并且不能在运行时更改它。
显然我发现有一个 Kotlin DSL 用于以编程方式构建导航图:https ://developer.android.com/guide/navigation/navigation-kotlin-dsl
不幸的是,我找不到任何使用此 Kotlin DSL 进行多堆栈底部导航的示例。
gradle - gradle kotlindsl 将逻辑提取到外部脚本
将 gradle 构建代码块提取到外部脚本的推荐方法是什么?请注意,这些脚本应该支持对 gradle 项目、extra 等的引用。所以 - 在 buildSrc 中编译 kt 文件不是我想要的。
我尝试创建类似的文件logger.gradle.kts
,这些文件似乎“知道”项目 ref / compile,但是fun
我在其中编写的任何内容在主构建文件中都不可引用,尽管我这样应用:
apply (from = "logger.gradle.kts")
作为构建的一部分,我得到的错误是:
Unresolved reference: logInfo
-在logInfo
哪里。fun
logger.gradle.kts
这是我正在使用的记录器文件:
以及 build.gradle.kts 中的用法:
并像这样调用:
该方法失败:
注意:如果我将函数添加到extra
(这是我在 hos 某处看到的在脚本文件之间公开方法的建议):
然后它失败了: