Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gradle:如何发布自定义文件工件?_Gradle_Publish_Artifact - Fatal编程技术网

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

Gradle:如何发布自定义文件工件?,gradle,publish,artifact,Gradle,Publish,Artifact,渐变版本:3.5 我正试图发布我的定制RPM工件,但文档中确实不清楚应该如何做到这一点 这是我们发布的gradle脚本的摘录: project(':path:to:rpm:project') { apply plugin: "java" apply plugin: "maven-publish" publishing { repositories { maven { credentials {

渐变版本: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,该ArtifactHandler实际上可以接受文件工件——DefaultArtifactHandler对此不起作用。有没有更好的选择,因为该项目实际上不是java项目,我更愿意不应用我并不真正需要的插件。

我在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
            }
        }
    }
}