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

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

李宜然
2023-03-14

Gradle版本:3.5

我试图发布我的自定义每1k展现的收入神器,但留档是真的不清楚这应该如何做。

这是我们发布的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
}

我不确定应该如何在发布闭包中引用每1k展现的收入工件的自定义。使用工件名称('our-software-rpm')不起作用,使用任务名称(rpmArts)也不起作用。那么我该怎么办?

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

共有1个答案

宋经业
2023-03-14

我在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插件,我正试图将其发布到一个私有的maven repo。我使用插件来实现这一点。在经历了很多麻烦之后,我查看了google play services插件的实现(https://github.com/google/play-services-plugins/blob/master/google-services-plugin/publish.gradle)并试图复

  • 我有一个gradle构建脚本,它检索了一些常见的依赖项,并将它们组合起来创建了一个“胖罐子”。

  • 我们有一个常春藤知识库,我们正在使用gradle进行依赖关系管理和构建框架。当一个工件被确定为生产就绪时,我们不想再次构建它,所以我们只想通过一个web应用程序“升级”一个现有的工件,该应用程序利用Gradle和工具API为我们完成大部分工作。 目前,我正在将工件复制到本地文件夹并运行另一个重新发布它的build.gradle。我们正在将其发布到现有存储库中的新文件夹和发布存储库中的文件夹。 这样

  • 在马文是超级容易;只需添加一行 有两个工件进入存储库(doc) 我的build.gradle是: 命令: 与Maven类似,2个工件进入存储库(publish-1.0.war和publish-1.0-classes.jar)此外,publish-1.0.pom进入存储库但没有依赖项。最后,对Hibernate的依赖丢失 例如,我创建了另一个依赖于发布的Maven项目 但是没有对Hibernate的

  • 我有一个多模块项目。而且,我希望能够只做gradle发布,并发布所有模块的所有工件。其中一个问题是,当我包含插件时,我得到了名为“构建”的任务,但在根项目中找不到。 当我运行

  • 在另一个项目中,我使用/应用这个插件: 但是如何从MyGradlePlugin.groovy中的apply方法中迭代公共依赖项并打印它们的坐标(artifactId、groupId、version)?