当前位置: 首页 > 知识库问答 >
问题:

设计问题-用于发布打包的Gradle插件?

锺离德庸
2023-03-14

gradle新手,

我已经开始实现一个小的gradle插件。该插件的目标是为项目创建一个发布zip,目的是跨几个不同的项目使用。

每个项目都有一个yaml文件,其压缩结构松散;

---
zip:
task:
  - name:
    zip:
     task:
          - name:
          - name:
          - name:

>

  • zip表示此时应该压缩给定的工作目录

    task表示为准备压缩而准备特定目录时应执行的梯度任务的名称

    想到的最好的方法是,通过这种方法,我可以在项目之间重用渐变任务,如果需要,可以在每个项目级别包括自定义渐变任务,并在yml中引用它们。使用yaml还有助于创建发布拉链,使其易于构建和阅读。。

    我有一个manager gradle任务,它在运行时从cli调用/gradlew myReleaseZipTask(我认为我是通过将其作为exec任务并将逻辑放入exec操作中来实现的)。此管理器任务负责将yaml文件解析为DTO。从最低的任务开始遍历,我遍历执行每个gradle任务的图形,按照定义将文件准备到指定的目录中,然后在所有任务完成后压缩当前工作区。继续向上绘制图形

    我的实施进行到一半,我有点担心我滥用gradle的方式不是有意的。我的一些主要担忧是;

    我有一个任务正在协调许多其他gradle任务,我要么在运行中查找或创建一个任务,然后检索其动作并从我的manager任务中执行它们,这在gradle示例中并不常见。每个人似乎都有非常静态的线性任务依赖关系,并且不会“反思性地”创建或查找要执行的任务。。

    当处理来自yml的任务条目时,我的管理器任务尝试按名称查找gradle任务,如果它不存在,则尝试创建任务。给定创建/找到的任务,我将YmlTaskDTO的属性设置到该任务上,然后调用该任务执行。重复使用具有不同属性的相同任务会遇到问题吗?例如,如果我有这样的东西;

    zip:
         task:
              - name: taskA
                argA: A
                argB: B
              - name: taskA
                argA: A
                argB: C
    

    有谁能给我一些关于我的设计的反馈,如果它符合gradle使用的正确标准吗?请提出您可能存在的任何问题!

  • 共有1个答案

    宋飞文
    2023-03-14

    我认为你自己已经意识到了一些答案<这里的一个指导是,“插件”将创建一种新的功能,这在本机gradle中是不可用的。

    您在这里所做的是按照您的用例的特定顺序组合现有任务。这个插件是一个大材小用。

    你所寻找的可以通过简单的任务和任务链来实现。

     类似资料:
    • 我以一个新的gradle用户的身份创建gradle版本,但我过去曾与maven合作过。 我试图重现maven发布插件的动作: 将分支版本更改为发行号(在svn提交) 如您所见,我正在使用: Nexus OSS作为版本控制库 SVN作为scm Gradle(2.8) 我正试图通过这两个插件实现我的目标: > 将分支版本更改为发行号(在svn提交) 创建标签(位于svn) 将分支版本更改为新快照编号(

    • null 现在,当我使用mvn从Jenkins内部运行maven release插件时,我仍然得到以下信息: 不显示错误 按预期创建SVN标记 然后在部署期间,它失败,出现上述错误 正如我提到的,快照部署经常发生并且没有错误,因此settings.xml、distributionManagement和Nexus权限似乎都是正常的。 我能够手动访问 我已经用和进行了检查,似乎一切正常 有什么想法吗?

    • 对于所有专家,我们一直在开发一个包含以下模块的应用程序: opencv 努比 熊猫 跺脚 nltk bs4 PIL 请求 还有一些不是pythons标准库的一部分。希望将其打包到单个可执行文件中。因此,我们尝试使用pyinstaller。执行时也是如此-它会建立分发文件夹-但无法执行。它抛出以下错误: 下面是运行命令时的输出 有人能帮我做同样的事吗。。我怎样才能解决这个问题?

    • 我有一个场景,我需要一些帮助来制定问题,这样我才能正确地实施优化方法。我希望有人能给我一些指导,表面上看起来很简单,但我很难弄清楚如何正确编码变量、约束等。 情况是这样的: 需要将多个物品放入箱子/背包中 例: 每个项目有两个值的向量: 项目=[[7,6],[14,2],[27,23],[5,15]] 箱子/背包的向量,第一个值为物品第一个值可接受的上限。第二个值相同,但适用于箱子/背包中每个物品

    • 在Windows 10系统上重新安装Repast Symphony 2.5.0(Win 64bit)和JDK 9.0.1后,导入JZombies_Demo示例时,无法使用默认配置启动模型。 错误显示: 当我编辑默认运行配置时,在依赖项选项卡中,我只看到JRE系统库,没有其他内容。在同一个选项卡中,恢复默认条目被启用-当我按它时,来自Repast Symphony的所有依赖项都被添加,并且之前的错误

    • 更改历史 * 2017-12-31 胡小根 初始化文档 1 步骤 以下步骤以 Xcode 8.3.1 为例 1.1 生成xcode工程 ionic cordova platform add ios 如下图所示: 1.2 在xcode中登录Apple ID 如下图所示: 1.3 生成CSR文件 1.4 生成Certificate 登录developer.apple.com,生成Ce