gradle 在父任务中使用在子任务中定义的变量

2023-11-21

我有一个多项目 gradle 构建,我在父构建中声明一个任务,该任务使用在子项目中声明的变量(该值可以根据子项目而变化)。但是,我在配置阶段收到错误,该变量不存在。我的设置看起来像

build.gradle(顶层)

subprojects {
   myTask {
     prop = valueDefinedInChild
   }

}

And then

build.gradle(子项目)

valueDefinedInChild = 'someValue'

有没有办法正确地做到这一点?


有一种方法可以做到这一点(project.evaluationDependsOnChildren()),但我建议仅将其用作最后的手段。相反,我会在顶层配置共性,并在子项目级别配置差异:

build.gradle(顶层):

subprojects {
    task myTask { // add task to all subprojects
        // common configuration goes here
    }
}

build.gradle(子项目):

myTask {
    prop = 'someValue'
}

避免重复的另一种方法是将公共代码分解为单独的脚本,并让子项目将其包含在apply from:。当逻辑仅适用于选定的子项目时,或者在需要避免父项目和子项目之间耦合的情况下(例如,当使用 Gradle 的新功能时),这是一个不错的选择按需配置特征)。

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

gradle 在父任务中使用在子任务中定义的变量 的相关文章

随机推荐

  • 无法在 WorkManager 中设置自定义工作工厂

    我使用此代码来设置我自己的工人工厂 val daggerWorkerFactory DaggerWorkerFactory toInjectInWorker val configuration Configuration Builder s
  • 如何通过 3d 到 2d 点对应估计相机位姿(使用 opencv)

    你好 我的目标是发展用于飞机 模拟器 驾驶舱的头部跟踪功能 以提供AR支持民用飞行员在视觉条件较差的情况下着陆和飞行 我的方法是检测我知道其 3D 坐标的特征点 在黑暗模拟器 LED 中 然后计算估计的 头戴式相机的 姿势 R t 旋转与平
  • 如何在 Matlab 中从 3D 矩阵制作视频

    我在 matlab 中有一大堆 2D 矩阵 它们应该组成一个 3D 矩阵 其中第三维是时间 我正在尝试从图像数据制作视频 我知道我可以使用 surf 使用二维矩阵之一制作曲面图 但我不确定要调用哪个命令来获取所有二维矩阵并将它们转换为曲面图
  • 带有自定义 ListView 的 DialogFragment

    我正在尝试创建一个 DialogFragment 它显示一个带有自定义 ListView 的对话框 public class MultiSelectDialogCustom extends DialogFragment ListView m
  • 如何使用流减少保留所有列表列表

    我面临以下问题 我有一个列表列表 我只想保留所有列表 我正在尝试处理流 private List
  • 如何在每次单击按钮时旋转 imageview 中的图像?

    这是java代码 我从图片库获取图像 我有一个按钮和一个ImageView 它只旋转一次 当我再次单击按钮时 它不会旋转图像 public class EditActivity extends ActionBarActivity priva
  • 为什么我无法使用 AT 命令接收短信?

    我想使用 AT 命令从我的电脑向我的手机发送 接收短信 我使用 USB 端口将手机连接到电脑 我的计算机检测到调制解调器 并且我能够从计算机向手机发送短信 但是我的电脑收不到短信 我正在展示我从 AT 编辑器获得的示例 AT CMGF 1
  • 如何在Xaml中单击时更改按钮内容?

    我有名为 保持按钮 的按钮内容 一旦我单击按钮 按钮内容应更改为 恢复 再次如果按下 恢复 按钮 则意味着 保持 应可见 XAML 代码
  • Intent 和 setContentView 之间的区别

    在我的主要活动中 加载视图作为意图或使用 setContentView 之间有区别吗 public class MainActivity extends Activity Override public void onCreate Bund
  • 理解 matplotlib 顶点

    我正在尝试在 matplotlib 中为散点图创建自定义标记 其中标记是具有固定高度和变化宽度的矩形 每个标记的宽度是 y 值的函数 我尝试过这样使用这段代码作为模板并假设如果给定 verts 一个 N 二维元组的列表 它会绘制具有相应第一
  • TSQL:如何将本地时间转换为UTC? (SQL Server 2008)

    我们正在处理一个需要处理来自不同时区和夏令时设置的全球时间数据的应用程序 这个想法是在内部以 UTC 格式存储所有内容 并且仅针对本地化用户界面来回转换 SQL Server 是否提供任何机制来处理给定时间 国家 地区和时区的翻译 这一定是
  • 杰克逊未填充所有属性

    我正在研究一个简单的例子Jackson library转换一个json串回Java object但我看到我的 java 对象上只设置了很少的属性 而不是所有属性 这是我的代码 import java io BufferedReader im
  • Linux 上的 C 异步、定时函数调用?

    Linux 上的 C 语言在一定延迟后异步调用函数的最简单 最有效的方法是什么 如 JavaScript 的setTimeout 或设置一个重复计时器定期调用它 类似于setInterval 虽然这个问题适用于Linux 但我希望有一种跨平
  • C# Virtual 和 Override 的内部工作原理

    C 虚拟和重写机制如何在内部工作的话题已经在程序员中讨论得死去活来了 但是在谷歌上半小时后 我找不到以下问题的答案 见下文 使用简单的代码 public class BaseClass public virtual SayNo return
  • Python PILLOW 的点线或短划线

    如何使用 Python PILLOW 绘制点划线或虚线或矩形 谁能帮我 使用 openCV 我可以做到这一点 但我想用 Pillow 来实现 感谢 martineau的评论 我弄清楚了如何绘制虚线 这是我的代码 cur x 0 cur y
  • PresentModalViewController 不工作

    这是我的代码 ViewController vc ViewController alloc initWithNibName TableView bundle nil self navigationController presentModa
  • 自动上传 ProGuard 映射文件到播放控制台

    每次我需要构建新版本的 apk 时 将 ProGuard 映射文件上传到 google play 控制台是非常烦人的 我的 gradle 构建为每个版本生成 4 个不同的 apk 所以我确实需要上传 4 个不同的映射文件 我想知道是否可以自
  • 如何使用 telethon 在 telegram 中搜索群组和频道?

    I use telethon用于使用 python 脚本向 telegram 发送消息 我在电视马拉松中没有找到任何东西来搜索我喜欢用来在电报应用程序上搜索的群组和频道 请看图片 我如何使用电视马拉松获得这样的列表 使用您的秘密创建文件 c
  • 为什么无论我做什么都无法更改复选框颜色? [复制]

    这个问题在这里已经有答案了 我尝试设置复选框背景颜色的样式 但它不会改变我所做的任何事情 我使用的是最新的 Firefox 29 css 或浏览器中是否有一些规则更改 CSS input type checkbox background 9
  • gradle 在父任务中使用在子任务中定义的变量

    我有一个多项目 gradle 构建 我在父构建中声明一个任务 该任务使用在子项目中声明的变量 该值可以根据子项目而变化 但是 我在配置阶段收到错误 该变量不存在 我的设置看起来像 build gradle 顶层 subprojects my