如何设置依赖gradle任务的属性

2024-04-01

我想设置一个“通用”任务,它将为多个平台构建应用程序包(它使用 javafxpackager)。该任务的机制适用于创建所有平台捆绑包,但区别在于任务使用的各种属性。

我原以为我会为每个平台创建单独的更高级别的任务,在其中设置平台特定的属性,然后调用/执行/(此处替换正确的 gradle 术语)通用任务。例如。,

task buildMacBundle(dependsOn: ['macBundleConfig', 'buildAppBundle']) << {
  // set Mac-specific properties (project.ext properties?)
  // call/invoke/execute or whatever the mechanism is called, buildAppBundle task
    buildAppBundle.mustRunAfter macBundleConfig
    println "building a Mac app bundle"
}

task macBundleConfig << {
    println "executing macBundleConfig"
    ext {
        nativeType = "dmg"
        bundleAppName = 'My App'
    }
    delete ("${buildDir.name}/dist/${bundleAppName}.dmg")
}


task buildWindowsBundle << {
  // omitted for brevity, but just like buildMacBundle except for property values
}

task buildAppBundle << {

    println "nativeType: ${project.ext.nativeType}" // it stumbles here!

    def cmd = [
        "${javapackager}",
        "-deploy",
        "-native", "${project.ext.nativeType}",
        "-name",
        "${project.bundleAppName}",
        "-outdir",
        "${buildDir.name}${File.separator}dist",
        "-outfile",
        "MyApp",
        "-srcdir",
        "${buildDir.name}${File.separator}${libsDir.name}",
        "-appclass",
        "org.pf.app.MyApp"
    ]

    println cmd.join(" ")

    def javapackager = exec {
        workingDir "${project.projectDir.absolutePath}"
        commandLine cmd
    }
}

但是当我运行“buildMacBundle”时,我得到

* What went wrong:
Execution failed for task ':buildAppBundle'.
> cannot get property 'nativeType' on extra properties extension as it does not exist

如何定义特定任务中的属性,然后调用通用任务?


我遇到了类似的问题,我发现如果你切换

ext {
    nativeType = "dmg"
    bundleAppName = 'My App'
}

with

project.ext {
    nativeType = "dmg"
    bundleAppName = 'My App'
}

它应该有效。 据我所知,这是一个范围问题 - 在第一种情况下,您设置了属性Task,在第二种情况下,对于Project.


顺便说一句,我认为buildAppBundle.mustRunAfter macBundleConfig对你来说太晚了,因为它是buildMacBundle任务,因此运行顺序为:

  1. mac 捆绑配置
  2. 构建AppBundle
  3. 构建MacBundle

并且只有在 3 期间才会进行配置mustRunAfter of buildAppBundle将被改变。

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

如何设置依赖gradle任务的属性 的相关文章

随机推荐

  • jquery .html() 追加后绑定不起作用

    我有这个简单的 div div div 它是空的 现在我正在尝试附加这个HTML到上面的div div div
  • 在 hive 中创建外部表时,我可以将位置指向目录中的特定文件吗?

    我这样定义了一个表 create external table PageViews Userid string Page View string partitioned by ds string row format as delimite
  • 将 python 包从本地目录导入到解释器中

    我正在本地目录中开发 测试一个包 我想将其导入解释器 v2 5 中 但 sys path 不包括当前目录 现在我输入sys path insert 0 有没有更好的办法 Also from import mypackage 失败并出现此错误
  • C# MEF 与静态类的使用

    我的解决方案中有一个静态类 用于处理各种程序集 我想通过MEF链接它们 所以我在类中创建了一个字段 Import typeof A static private A a1 然后我有一个方法 将程序集名称作为参数传递给该方法 public s
  • Ionic App Availability 插件获取错误对象 (...) 不是函数

    我正在尝试在 ionic 中实现应用程序可用性功能 我的设备中安装了一个应用程序 并尝试检查另一个应用程序中是否存在该应用程序 但面临同样的问题 出现以下错误 您可能面临应用程序的离子版本与应用程序中安装的插件版本不匹配的问题 在 Ioni
  • Eclipse 大纲视图为空

    今天简单说一下 我的OutlineEclipse 中的视图不再显示任何方法或字段 我选择了大纲视图菜单中可用的几个选项来向我展示所有可能的内容 但仍然一无所获 如果我右键单击类编辑器并选择Quick Outline我得到了曾经出现在Outl
  • 应用程序与数据库驻留连接池

    情况 我需要在 python 中连接到 Oracle 数据库时使用连接池 多个 python 应用程序将使用我开发的辅助连接库 我的思考过程 这里我可以想到两种连接池的方式 1 让连接池由数据库本身维护和管理 由 Oracle 的 DRCP
  • 如何根据输入的行数生成html表格? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我必须使用 jquery 创建一个表 表格的行数将由输入框确定 列数是已知的 提交后 会生成一个表 尝试创建一个小提琴 我对 jque
  • 如果类型是事后定义的,则实例化具有不完整类型的类模板是否格式错误?

    这段代码肯定是格式错误的 因为Foo在实例化点之后专门化 template
  • 我应该在

    现在我们有专门的
  • Matlab - 访问多维数组的一部分

    我正在尝试访问 Matlab 中多维数组的一部分 可以这样做 X 2 3 1 20 5 4 7 然而 元素的数量和范围都不是固定的 所以我想提供数组的索引 对于上面的例子 它们是 ind1 2 1 5 4 ind2 3 20 5 7 对于固
  • C++ 使用 std::string、std::wstring 作为缓冲区

    使用 WinAPI 时 您经常会遇到一些获取 LPWSTR 或 LPSTR 作为参数的方法 有时这个指针实际上应该是指向缓冲区的指针 例如 int GetWindowTextW HWND hWnd LPWSTR lpString int n
  • Amazon S3 使 SSL 与 c# sdk 配合使用时出现问题

    我正在使用亚马逊 AWS NET SDK v1 2 1 以下代码在 DNS 查找失败后引发异常myBucket more https这显然不是它应该寻找的 AmazonS3Config S3Config new AmazonS3Config
  • Python读取时出现权限错误

    import os import rarfile file input Password List Directory rarFile input Rar File passwordList open os path dirname fil
  • 打开的连接数以及连接睡眠状态的含义

    我在我的数据库中运行了这个查询 SELECT DB NAME dbid as DBName COUNT dbid as NumberOfConnections loginame as LoginName FROM sys sysproces
  • 防止正文滚动(移动设备、本机浏览器)

    在 Samsung Galaxy S5 S6 的本机浏览器上 以下 CSS 片段 body overflow hidden 不会阻止主体滚动 有解决方法吗 编辑 如下所述 这也可以通过添加溢出 隐藏到 html 标签来完成 但这引入了窗口滚
  • 如何显示MapKit指南针?

    目前 指南针仅在以下情况下才会显示用户应用旋转手势 否则指南针将被隐藏 不过如果能实现我下面的两个愿望就好了 是否可以一直显示指南针 如何使用 Swift 显示 隐藏指南针视图 您可以在 iOS 11 中使用新功能轻松完成此操作MKComp
  • 一维字符串数组被角度资源解析为二维

    来自服务器的以下 JSON 响应 hello world 正在被 ngResource 服务解析为二维数组 myService factory Name function resource return resource site url
  • Perl 中的 my 和 local 有什么区别?

    我看到它们都用在我正在尝试调试的脚本中 但文献还不清楚 有人能为我揭开这个神秘面纱吗 简短的回答是my将变量标记为词法范围内的私有变量 并且local将动态范围内的变量标记为私有 更容易理解my 因为这会创建通常意义上的局部变量 创建了一个
  • 如何设置依赖gradle任务的属性

    我想设置一个 通用 任务 它将为多个平台构建应用程序包 它使用 javafxpackager 该任务的机制适用于创建所有平台捆绑包 但区别在于任务使用的各种属性 我原以为我会为每个平台创建单独的更高级别的任务 在其中设置平台特定的属性 然后