问题标签 [gradle-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.
gradle - 如何在两个 build.gradle.kts 文件之间共享构建配置?
我有两个项目(在一个 git 存储库中)应该具有相同的
在他们的部分build.gradle.kts
,但在其他方面是完全不相关的。
我可以将这个共同部分分解并包含在每个部分中 build.gradle.kts
吗?如何?
intellij-idea - Gradle kotlin 脚本,> 未找到 ID 为 `kotlin` 的插件
我尝试使用 Kotlin 脚本将我的一个项目迁移到 Gradle。
这些是我的步骤:
/gradle/wrapper/gradle-wrapper.jar
用这个代替distributionUrl
将of更新为与此处gradle/wrapper/gradle-wrapper.properties
相同- 创建了对应的
build.gradle.kts
- 设置
settings.gradle
为rootProject.buildFileName = 'build.gradle.kts'
此时 Intellij 检测到它并建议:
您可以配置 Gradle 包装器以将分发与源一起使用。它将为 IDE 提供 Gradle API/DSL 文档。
-> 好的,应用建议!
Gradle 'hello-kotlin' 项目刷新失败
错误:未找到 ID 为“kotlin”的插件。
然后我也尝试了官方样品之一:
- 克隆了回购
- 打开样品
- 同样的错误
...我究竟做错了什么?
回到官方样例,尝试失效缓存重启,还是不行
我试图删除
刷新 Gradle,再次添加,刷新 Gradle,成功了
如果我打开一个 src 文件,Intellij 会说:
Kotlin 未配置
但是该示例现在似乎正在运行..
Intellij 2017.1 EAP
科特林 1.1m04
kotlin - 如何使用 Gradle Kotlin 脚本创建胖 JAR?
如标题所示,我想知道如何修改gradle.build.kts
,以便创建一个jar
包含所有依赖项(包括 kotlin 库)的唯一的任务。
我在 Groovy 中找到了这个示例:
但我不知道如何在 kotlin 中编写它,除了:
gradle - 使用 Gradle Kotlin DSL 在 Gradle 中进行样板项目配置
我目前正在尝试改进我们的项目共享配置的方式。我们所有的库和微服务(即许多 git repos)都有许多不同的多模块 gradle 项目。
我的主要目标是:
- 不要在每个项目中重复我的 Nexus 存储库配置(另外,我可以放心地假设 URL 不会更改)
- 为了使我的自定义 Gradle 插件(发布到 Nexus)可用于每个项目,且样板/重复最少(它们应该可用于每个项目,并且项目唯一关心的是它使用的版本)
- 没有魔法 - 开发人员应该很清楚一切是如何配置的
我当前的解决方案是一个自定义的 gradle 发行版,它带有一个 init 脚本:
- 将
mavenLocal()
我们的 Nexus 存储库添加到项目存储库(非常类似于 Gradle初始化脚本文档示例,除了它添加存储库并验证它们) - 配置一个扩展,允许将我们的 gradle 插件添加到 buildscript 类路径中(使用此解决方法)。它还将我们的 Nexus 存储库添加为 buildscript 存储库,因为这是托管插件的地方。我们有很多插件(基于 Netflix 优秀的nebula 插件构建)用于各种样板:标准项目设置(kotlin 设置、测试设置等)、发布、发布、文档等,这意味着我们的项目
build.gradle
文件几乎只是用于依赖项.
这是初始化脚本(已清理):
然后我通过将以下内容添加到根 build.gradle 文件来配置每个新项目:
虽然这种方法有效,但允许可重现的构建(不像我们之前的设置,它从 URL 应用构建脚本 - 当时不可缓存),并且允许离线工作,它确实让它有点神奇,我想知道我是否可以做得更好。
这一切都是通过阅读Gradle 开发人员 Stefan Oehme在 Github 上的评论触发的,该评论指出构建应该在不依赖 init 脚本的情况下工作,即 init 脚本应该只是装饰性的,并且可以执行文档示例之类的操作 - 防止未经授权的 repos 等。
我的想法是编写一些扩展函数,允许我将 Nexus 存储库和插件添加到构建中,其方式看起来像是内置在 gradle 中(类似于扩展函数gradleScriptKotlin()
,kotlin-dsl()
由 Gradle Kotlin DSL 提供。
所以我在一个 kotlin gradle 项目中创建了我的扩展函数:
计划在我的项目中使用它们build.gradle.kts
如下:
但是,Gradle 在buildscript
块中使用时无法看到我的函数(无法编译脚本)。不过,在正常的项目存储库/依赖项中使用它们效果很好(它们是可见的并且按预期工作)。
如果这可行,我希望将 jar 捆绑到我的自定义发行版中,这意味着我的 init 脚本可以只进行简单的验证,而不是隐藏神奇的插件和 repo 配置。扩展功能不需要更改,因此在插件更改时不需要发布新的 Gradle 发行版。
我尝试了什么:
- 将我的 jar 添加到测试项目的 buildscript 类路径(即
buildscript.dependencies
) - 不起作用(也许这在设计上不起作用,因为buildscript
在同一个块中添加依赖项似乎不正确) - 将功能放入
buildSrc
(这适用于正常的项目部门/回购但不是buildscript
,但不是真正的解决方案,因为它只是移动样板) - 将 jar 放到
lib
发行版的文件夹中
所以我的问题真的归结为:
- 我想要实现的目标是否可行(是否可以使自定义类/函数对
buildScript
块可见)? - 是否有更好的方法来配置企业 Nexus 存储库并使自定义插件(发布到 Nexus)在许多单独的项目(即完全不同的代码库)中可用,且样板配置最少?
android - 错误:任务“:app:compileDebugKotlin”执行失败。> 编译错误。有关详细信息,请参阅日志
构建:gradle(模块:应用程序)
构建:gradle(项目)
// 顶级构建文件,您可以在其中添加所有子项目/模块通用的配置选项。
解决方案尝试:
- 使缓存无效/重新启动
- 构建 -> 清理项目
- 更新 kotlin 插件,使用最新版本的 kotlin,google APIs。
编辑
日志错误.txt
google-app-engine - 使用 Kotlin 脚本配置 App Engine Gradle 插件
我正在尝试使用 Gradle Script Kotlin 在我的 App Engine 项目上配置构建,但无法弄清楚如何设置 cloudSdkHome 属性(或插件的任何配置!)
在一个 groovy gradle 脚本中,它是这样完成的:
构建.gradle.kts
我可以看到 AppEngineStandardPlugin 确实以与主扩展“appengine” AppEngineStandardPlugin不同的方式注册“工具”扩展
gradle - Kotlin DSL 中的 gradle 额外属性是如何设置的?
我正在尝试像在 groovy 中那样组织我的构建文件,方法是将值放在一个单独的文件中以供重用。但我无法理解在 kotlin DSL 中做同样事情的语法。
这是我在 root build.gradle.kts 中使用的内容:
这是正在引用的 config.gradle.kts 中的内容:
但是有一个错误:
无法在额外属性扩展上获取属性“minSdkVer”,因为它不存在
gradle - 摇篮 KTS。如何将依赖项配置从主构建移动到单独的文件?
我正在尝试在 kotlin 中创建模块化构建脚本。基本上是主脚本和依赖脚本。在 build.gradle.kts 我有:
在 dependencies.kts 我有实际的依赖项:
这失败了:
如果我尝试导入 kotlinModule,则会失败:
我做错了什么以及如何做对?
版本及相关信息:
- 梯度:4.0
- 摇篮 KTS:0.9.0
- 编辑器:IntelliJ U 2017.1.4
- Kotlin 插件:1.1.3 EAP
- 项目的 Kotlin 版本:1.1.2.5
当我在主文件中有依赖项时,我的构建工作完美。所有必要的配置(构建脚本、插件、存储库等)都存在,但为简洁起见,此处省略。
gradle - 摇篮。Kotlin - 是否可以创建动态(“on fly”)任务?
我是一名安卓开发者。结果由 Gradle 编写构建。我在 Groovy 上的 Gradle DSL 上编写的许多任务。
有时我需要动态创建 Gradle 任务(“on fly”)。这里的例子:
此任务生成具有所有风味组合的新任务。结果 Gradle 脚本非常小,易于理解且易于支持。它非常强大的 Groovy 功能。它经常帮助我。
在新版本的 Gradle 中引入了新语言 - Kotlin。
我的问题是:是否可以在 Kotlin 上编写相同的任务(用于动态创建另一个任务)?
gradle - Kotlin 和 Gradle - 从 stdio 读取
我正在尝试使用以下命令执行我的 Kotlin 类:
这是我的HelloWorld.kt类:
这是我的build.gradle.kts:
代码会执行,但不会显示 input.txt 文件中包含的数据。这是我得到的输出:
我希望能够执行上面的 gradlew 命令,并将 input.txt 流重定向到 stdio。我可以在 C++ 中轻松做到这一点。编译 .cpp 文件后,我可以运行:
它按预期执行。
如何使用 Kotlin 和 Gradle 实现相同的目标?
更新:基于此答案,我尝试将其添加到 build.gradle.kts 但它不是有效的语法: