从 Gradle 将 RPM 上传到 Artifactory

2023-12-05

如何使用 Gradle 将 RPM 文件上传到 Artifactory? Gradle 总是使用 maven 风格的直接布局上传文件,这对于 YUM 存储库来说是不合适的。


这里的问题是 Gradle 坚持以 maven 风格的目录格式上传所有内容group-id/version/artifact,而 yum 存储库需要平面布局。这里有两种方法 - 使用 Artifactory 插件或 Gradles 更新的发布机制。我只能让它与后者一起工作。

我假设您正在使用Gradle ospackage 插件并且已经创建了 RPM 版本。在我的例子中,RPM 任务的名称是distRpm。例如:

task distRpm(type: Rpm) {
    packageName = 'my_package'
    version = version
    release = gitHash
    arch = 'X86_64'
    os = 'LINUX'
    // Etc
}

将 ivy 发布插件添加到您的项目中:

apply plugin: 'ivy-publish'

然后添加发布块:

publishing {
    publications {
        rpm(IvyPublication) {
            artifact distRpm.outputs.getFiles().getSingleFile()
            /* Ivy plugin forces an organisation to be set. Set it to anything
               as the pattern layout later supresses it from appearing in the filename */
            organisation 'dummy'
        }
    }
    repositories {
        ivy {
            credentials {
                username 'yourArtifactoryUsername'
                password 'yourArtifactoryPassword'
            }
            url 'https://your-artifactory-server/artifactory/default.yum.local/'
            layout "pattern", {
                artifact "${distRpm.outputs.getFiles().getSingleFile().getName()}"
            }
        }
    }
}

Ivy Publication 允许您指定上传的目录和文件名模式。它被覆盖为 RPM 的确切文件名。

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

从 Gradle 将 RPM 上传到 Artifactory 的相关文章

随机推荐

  • 核心动画进度回调

    当核心动画在运行时达到某些点 例如 完成的 50 和 66 时 是否有一种简单的方法可以回调 我目前正在考虑设置一个 NSTimer 但这并不像我想要的那么准确 我终于为这个问题开发了一个解决方案 本质上 我希望每一帧都能被回调并做我需要做
  • 多种动态选择

    我需要一种有多个选择但一次只能看到一个的方法 当用户想要添加另一个选择时 他 她单击按钮 复选框 单选按钮 等等 他们需要能够添加无限数量的选择 有任何想法吗 老问题 但不妨加上我的 2 美分 以防其他人想知道答案 我会使用 JavaScr
  • 为什么 DELETE FROM ... FROM ... 不会出错?

    存储过程中的这一点显然是有效的 sql DELETE TOP MaxRecords FROM Table FROM Table B INNER JOIN Table2 R ON B fk R pk WHERE R Value lt DecV
  • 用于简单搜索的 Github API incomplete_results

    我正在通过 API 查询 github 这是一个非常简单的查询 用于在我的组织 abc xyz 的 pipelines 文件夹中查找名为 pipelines yaml 的文件 Querying https api github com se
  • 访问 csv 标题空白且不区分大小写

    我正在重写csv Dictreader fieldnames如下所示的属性 从 csv 文件中读取所有标题 不带空格且小写 import csv class MyDictReader csv DictReader property def
  • Python mpmath 不是任意精度?

    我试图继续我之前的问题 其中我试图使用贝内特算法计算斐波那契数 为了以任意精度工作 我发现mpmath 然而 实施似乎在超过一定值时失败 例如 第 99 个值给出 218922995834555891712 这应该是 ref 2189229
  • 排查 apache beam 管道导入错误 [BoundedSource 对象大于允许的限制]

    我有一堆文本文件 1M 存储在谷歌云存储上 当我将这些文件读入 Google Cloud DataFlow 管道进行处理时 我总是收到以下错误 Total size of the BoundedSource objects returned
  • 使用数据表加载消息

    我使用 Datatables 与 PHP 和 Mongo 来创建 CRUD 这是我的代码并且运行良好 table example DataTable bLengthChange false ajax get clients 这是我加载新数据
  • 将擦除与remove_if一起使用

    这件事让我发疯 我无法理解 v contains 101 1 2 3 4 5 v erase remove if v begin v end bind2nd less
  • 音板应用程序上的媒体播放器错误

    我有一个音板应用程序 可以在按下按钮时调用音频文件 然而 在按下并播放大多数按钮后 我开始收到这些媒体播放器错误 有谁知道如何检测它并重新启动或完全阻止它发生 谢谢你的时间 colby for Map Entry
  • 如何使用 jQuery 从

    获取前 2 行或 200 个字符

    我有一个大约有10行的段落 我想在 2 行后显示阅读更多按钮 如何使用 jQuery 获取某些字符的前两行 有没有类似的功能 p get 2lines 尝试这个 可能需要定制
  • DOMNodeInserted 事件循环

    我正在为 facebook 开发一个 chrome 扩展 我的第四个问题左右 它在 喜欢 按钮旁边添加了一个自定义按钮 由于帖子会自动添加到新闻源中而无需刷新页面 因此每次添加新帖子时我都必须添加脚本 我用DOMNodeInserted e
  • 使用 Babel 将 ES6 转译为 IE11

    我是 babel 的新手 正在尝试将我的 es6 代码转译为与 IE11 一起使用 但是当我在 IE11 中运行代码时 我收到关于我的 js 错误forEach代码 根据我读到的内容 我需要添加预设 babel preset env 我将其
  • 作为事件处理程序的接口方法

    Delphi 2007 中是否可以使用接口方法作为事件处理程序 简单版本不起作用 type TMyEvent procedure of object IMyInterface interface procedure Handler end
  • 如果标记接口没有任何方法,它如何工作?

    我知道什么是标记接口以及何时需要使用它 有一个问题我还是不太清楚 如果标记接口没有任何方法或主体 那么它在运行时如何工作 标记界面本身并不能 工作 顾名思义 它只是将一个类标记为特定类型 其他一些代码必须检查标记是否存在 并根据该信息执行某
  • 在 osx 10.9 上编译 phalcon 时出现问题

    尝试遵循文档中的说明 running sudo install 并得到这个 gcc I I Users honky cphalcon build 64bits DPHP ATOM INC I Users honky cphalcon bui
  • 为什么我的粘性页脚粘不住?

    我浏览了与 粘性页脚 相关的所有问题 但没有任何帮助 因为我的 content div 并不总是有足够的内容将页脚推到底部 这是我用来实现此目的的代码 但显然我做错了什么 html body div container height 100
  • 如何在多列上查询 dgrid

    是否可以创建一个 dgrid 查询来在多个列上搜索正则表达式字符串 通常 语法指定 column1 foo column2 foo 但这将查找 column1 和 column2 均为 foo 的行 但我想对两列使用相同的搜索字符串 这可能
  • 有没有更好的方法来调整打印整数的缓冲区大小?

    我想创建一个缓冲区sprintfing 一个整数 在本例中是unsigned int 一个简单且误导性的方法是 char buf 11 sprintf buf u x 如果我们知道这一点 这会很有用unsigned int至多是33位宽 但
  • 从 Gradle 将 RPM 上传到 Artifactory

    如何使用 Gradle 将 RPM 文件上传到 Artifactory Gradle 总是使用 maven 风格的直接布局上传文件 这对于 YUM 存储库来说是不合适的 这里的问题是 Gradle 坚持以 maven 风格的目录格式上传所有