Gradle:如何发布自定义文件工件?

Posted

技术标签:

【中文标题】Gradle:如何发布自定义文件工件?【英文标题】:Gradle: How do I publish a custom file artifact? 【发布时间】:2017-10-02 10:22:09 【问题描述】:

Gradle 版本:3.5

我正在尝试发布我的自定义 RPM 工件,但文档确实不清楚应该如何完成。

这是我们发布的 gradle 脚本的摘录:

project(':path:to:rpm:project') 

    apply plugin: "java"
    apply plugin: "maven-publish"

    publishing 
        repositories 
            maven 
                credentials 
                    username 'aaa'
                    password 'sss'
                
                url "https://url/to/repository"
            
        

        publications 
            pub(MavenPublication) 
                artifact 'our-software-rpm' 

                
            
        
    

    task rpmArtifact(dependsOn: 'installerMakeRpm') 
        ext.rpmfile = file("$project.buildDir/tmp/rpmbuild/RPMS/x86_64/our-software.x86_64.rpm")
    

    artifacts 
        archives(rpmArtifact.rpmfile) 
            name 'our-software-rpm'
            type 'rpm'
            builtBy rpmArtifact
        
    

    assemble.dependsOn rpmArtifact

我不确定我应该如何在发布关闭中引用自定义 RPM 工件。使用工件名称 ('our-software-rpm') 不起作用,使用任务名称 (rpmArtifact) 也不起作用。那我该怎么办?

此外,该项目应用 java 插件来获取一个 ArtifactHandler,它实际上可以接受文件工件 - DefaultArtifactHandler 不适用于此。有没有更好的选择,因为该项目确实不是 java 项目,我宁愿不应用我并不真正需要的插件。

【问题讨论】:

【参考方案1】:

我收到关于 gradle 问题列表的模糊提示,以下解决方案最终对我有用:

请注意,我仍然有不需要的 java 插件声明,我没有找到解决方案。

project(':Release:Installers:OurProject:Linux:our-project') 

    apply plugin: 'java'

    def myRpm = artifacts.add('archives', file("$project.buildDir/rpm/our-project-$productInfo.ai_version.x86_64.rpm")) 
        builtBy('installerMakeRpm') 
    

    publishing 
        publications 
            pub(MavenPublication) 
                artifact myRpm
                artifactId "our-project-installer-linux"
                groupId 'com.company.ourproject'
                version productInfo.release_tag
            
        
    

【讨论】:

以上是关于Gradle:如何发布自定义文件工件?的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle 插件将自定义 Gradle 插件上传到自建 Maven 仓库 ③ ( 配置上传工件 | 将 Gradle 插件 jar 包源码文档上传到本地Maven 仓库 )

如何在sbt 1.0.x中发布自定义工件

如何将 npm 包发布/部署到自定义工件

NativeScript:我如何在平台文件夹之外保留自定义 gradle.properties?

如何在 build.gradle 中定义和调用自定义方法

如何在 android gradle.kts 中定义自定义源集?