如何在Gradle中定义artifactory插件的出版物

时间:2017-11-10 09:54:27

标签: gradle artifactory

我有一个Gradle项目,它使用de.fanero.gradle.plugin.nar插件(https://github.com/sponiro/gradle-nar-plugin)构建Nifi NAR文件。

buildscript {
    repositories {
        mavenCentral()
        maven { url 'http://dl.bintray.com/sponiro/gradle-plugins' }
    }
    dependencies {
        classpath group: 'de.fanero.gradle.plugin.nar', name: 'gradle-nar-plugin', version: '0.1'
    }
}

apply plugin: 'de.fanero.gradle.plugin.nar'
apply plugin: 'java'

dependencies {
    ...
}

现在我想使用com.jfrog.artifactory插件将NAR文件上传到Jfrog Artifactory。我正在努力解决出版物问题。我尝试做了类似于下面定义的事情,但我失败了。

publishing {
    publications {
        mavenJava(MavenPublication) {
            from project.components.java
        }
    }
}

我设法做到的唯一方法是明确定义文件路径,但我想将它作为最后的手段。

nar(MavenPublication) {
    artifact file("build/libs/my-custom-nar-1.0-SNAPSHOT.nar")
}

我将感谢所有建议。感谢。

1 个答案:

答案 0 :(得分:4)

不确定NAR是什么,但我已经发布了具有以下配置的自定义非JAR工件:

  1. 定义您的工件。它可以是ZIP,JAR或TAR:

    task deployableZIP(type: Zip) {
        from 'deployable'
        baseName = 'deployable'
        destinationDir = buildDir
    }
    
  2. 配置发布:

    publishing {
        publications {
            main(MavenPublication) {
                artifact source: deployableZIP, extension: 'zip'
            }
        }
    }
    
  3. 请注意,publications块会引用deployableZIP任务本身:没有引号,只是一个任务引用。

    我相信,在您的情况下,nar任务已经由插件创建,因此您需要做的是:

    publishing {
        publications {
            main(MavenPublication) {
                artifact source: nar, extension: 'nar'
            }
        }
    }
    

    然后,您可以在Gradle Artifactory plugin中使用该出版物:

    artifactory {
        contextUrl = 'http://artifacto.ry'
        publish {
            repository {
                repoKey = 'libs-snapshot-local'
                username = 'darth_vader'
                password = 'padme'
            }
            defaults {
                publications('main')
                publishArtifacts = true
            }
        }
    }
    

    有几十个例子here