Gradle Kotlin DSL:如何使用 typesafe api 配置子项目

2024-04-14

摇篮6.1.1

我一直在尝试使用 Kotlin DSL 转换我的项目的 Gradle 文件类型安全方式但到目前为止失败了。我的所有项目都是用 Java 进行的多项目构建。这个想法是分解/删除子模块的常见配置(无论是在根模块的“子项目”块中还是在我不关心的单独“kts”文件中)。 官方文档指出,“子项目”和 apply(from = 'shared.gradle.kts') 不可能具有类型安全(https://docs.gradle.org/current/userguide/kotlin_dsl.html https://docs.gradle.org/current/userguide/kotlin_dsl.html).

它的工作原理如下,但相当烦人:


plugins {
    idea
    eclipse
}

subprojects {
    apply(plugin = "java")

    dependencies {
       "implementation"("com.google.guava:guava:28.1-jre")
       //...
    }
}

有没有办法以类型安全的方式分解所有子模块的模块配置?如果没有...... gradle 是否计划允许它?


Gradle 6.1.1 类型安全模型访问器 https://docs.gradle.org/current/userguide/kotlin_dsl.html#type-safe-accessors reads:

只有主项目构建脚本和预编译项目脚本插件具有类型安全的模型访问器。初始化脚本、设置脚本、脚本插件则不然。这些限制将在未来的 Gradle 版本中删除.

无论“未来版本”可能意味着什么……同时交叉配置项目 https://docs.gradle.org/current/userguide/kotlin_dsl.html#sec:kotlin_cross_project_configuration reads:

跨项目配置是一种可以从另一个项目的构建脚本配置项目的机制。一个常见的示例是在根项目构建脚本中配置子项目时。采用这种方法意味着您将无法对插件贡献的模型元素使用类型安全的访问器。相反,您必须依赖字符串文字和标准 Gradle API。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gradle Kotlin DSL:如何使用 typesafe api 配置子项目 的相关文章

随机推荐

  • 如何快速有效地调试 CloudFormation 模板?

    CloudFormation 是一项功能强大的 AWS 产品 允许以编程方式创建 AWS 资源堆栈 例如应用程序的网络层 https s3 amazonaws com cloudformation templates us east 1 v
  • Crm 2011 Outlook 客户端 - 设置有关强制

    我们的客户正在使用 Microsoft CRM 2011 Outlook 客户端 他们有独特的业务需求 他们希望所有使用 Outlook 发送电子邮件的员工都必须强制执行 设置相关内容 很奇怪吧 如果用户在发送电子邮件时忘记设置相关内容 O
  • (PostgreSQL)错误:无法打开关系

    我收到这个奇怪的错误 Caused by org postgresql util PSQLException ERROR could not open relation base 17369 1684 No such file or dir
  • 链接静态库后去除名称

    在 iOS 6 的静态库项目中 c 文件中的某些函数被其他函数引用 因此被视为全局符号 但不应向该库的用户公开 我怎么能够strip这些函数名出来了吗 另外 我怎样才能隐藏这些 obj 文件名 以便没有人可以看到 o 名称nm output
  • 清理 PHP/HTML 页面

    有人知道有什么好用的工具可以清理php和html文件吗 我以前使用过 Tidy 但它在单独处理 php 代码方面效果不佳 我知道 tidy 有多种实现 但是有没有专门针对 html 和 php 页面的工具统治冠军 清理代码从将 PHP 与
  • Golang 预处理器类似 C 风格的编译开关

    GO语言有预处理器吗 当我查找互联网时 几乎没有将 pgo 转换为 go 的方法 而且 我想知道这在 Go 中是否可行 ifdef COMPILE OPTION compile this code elif compile another
  • 将 html 表单值传递给 google 搜索查询[重复]

    这个问题在这里已经有答案了 旁注 在每个人告诉我谷歌的自定义搜索引擎之前 我一直在使用它直到现在 但我发现很难设计该搜索框的样式 并且它在我的网站上崩溃了 Hello 我正在尝试创建一个使用 HTML 表单输入的 google 搜索查询 我
  • VBA:运行时错误“91”?

    我在这里想做的就是保存对当前活动窗口的引用 但它似乎不起作用 它在最后一行给了我一个运行时错误 Dim SourceWindow As Window QACheckWindow As Window SourceWindow ActiveWi
  • iOS:处理长按并拖动以选择另一个按钮。 (如键盘)

    我很难找到有关如何处理触摸事件以支持与键盘类似的行为的正确文档 我想要的是一个按钮 当我长按它时 它会在按钮上方显示一个自定义视图控制器 但我希望用户能够将手指拖动到其他按钮之一 无需将手指离开屏幕 我长按按钮 它是自定义视图控制器的所有设
  • 上下文是只读的

    Helo大师 我必须动态创建一个JNDI数据源 我尝试使用名为SetupApplicationListener的侦听器来完成它 这是开始WEB LIB web xml
  • 将参数从 pug 传递到 JSX

    我正在使用 Express 和 React 构建游戏 我需要访问我的 userIdindex jsx文件来在我的控制器上执行操作 例如增加用户分数 我的路线呈现index pug文件同时传递user id param server js a
  • 具体时间通知

    我在特定时间收到通知 请参阅我的代码 Create alarm manager AlarmManager alarmMgr0 AlarmManager getSystemService Context ALARM SERVICE Creat
  • JavaScript 字符串换行符是什么?

    Is nJavaScript 中适用于所有平台的通用换行符序列 如果不是 我如何确定当前环境的特征 我不是在询问 HTML 换行元素 br 我问的是 JavaScript 字符串中使用的换行符序列 我刚刚使用这段愚蠢的 JavaScript
  • 如何让我的 Android 应用程序出现在超省电模式下

    一些三星设备具有超省电模式 可以关闭 wifi 将屏幕变成灰度并限制使用一些基本应用程序 但是 它确实允许您添加一些可以使用的应用程序 这些应用程序包括 Facebook 和 WhatsApp 如何让我的应用程序出现在此列表中 我必须对应用
  • ajax响应错误(XML解析错误:找不到元素位置:moz-nullprincipal)

    我无法得到 ajax 的响应 请指导我如何解决此错误 我从已签入的服务器成功返回数据小提琴网络调试器并且 ajax 仍然显示错误 XML 解析错误 找不到元素位置 moz nullprincipal 6b0a1ac2 50ab 4053 9
  • 如何在 Rails 视图中注释代码?

    当我使用 Rails 并开发视图时 我经常想注释掉代码 类和模型足够简单 但是views有点棘手 在视图中注释代码的最佳方式是什么 这样它就不会被任何东西解释 HTML 给了我们尽管这里包含的代码似乎无论如何都会被解释 或者还有更 Rail
  • Flutter FCM onBackgroundMessage 处理程序给出 null 检查错误

    我正在尝试为我的应用程序实现通知 但是在初始化通知时FirebaseMessaging onBackgroundMessage notificationHandler 给出错误 Error E flutter 28265 错误 flutte
  • JVM 在 Ubuntu 上尝试打开 JavaFX 保存对话框或打开对话框时崩溃

    在 Windows 中一切正常 我只是使用 JavaFX 和 Java 1 8 0 131 从操作系统中选择文件 A fatal error has been detected by the Java Runtime Environment
  • Selenium 登录测试不接受 pytest 设备登录或拒绝连接

    我变得绝望 因为我似乎找不到一个我认为每个人都会使用的解决方案 我想使用 selenium 和 pytest 以及 live server url 来测试简单的登录 根据 pytest django 文档 一个简单的固定装置称为live s
  • Gradle Kotlin DSL:如何使用 typesafe api 配置子项目

    摇篮6 1 1 我一直在尝试使用 Kotlin DSL 转换我的项目的 Gradle 文件类型安全方式但到目前为止失败了 我的所有项目都是用 Java 进行的多项目构建 这个想法是分解 删除子模块的常见配置 无论是在根模块的 子项目 块中还