Gradle发布到artifactory - 找不到方法artifactoryPublish()

时间:2017-05-10 18:07:30

标签: gradle build.gradle artifactory

我尝试使用gradle将工件发布到artifactory,但gradle不会识别artifactoryPublish()或artifactory()。我收到以下错误:

Could not find method artifactoryPublish() for arguments [build_9ujhxzionc580et0ezlx54vcs$_run_closure4@14af6c29] on root project 'uw-data-util' of type org.gradle.api.Project. 

我的gradle版本3.5

这是我的 build.gradle

apply plugin: "groovy"
apply plugin: "java"
apply plugin: "maven"
apply plugin: "eclipse"
apply plugin: "idea"
apply plugin: 'application'
apply plugin: 'maven-publish'

repositories {
    mavenCentral()
    mavenLocal()
    jcenter()
    maven { url "https://artifactory.internal.com/artifactory/libs-release/"
        credentials { username = project.hasProperty('artifactory_user') ? project.artifactory_user : System.getenv()['ARTIFACTORY_USER']
            password = project.hasProperty('artifactory_password') ? project.artifactory_password : System.getenv()['ARTIFACTORY_KEY']}
    }
}

// In this section you declare the dependencies for your production and test code
dependencies {
    compile group: 'org.testng', name: 'testng', version: '6.10'
    compile group: 'org.apache.poi', name: 'poi', version: '3.15'
    compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.15'
    //compile group: 'com.monitorjbl', name: 'xlsx-streamer', version: '1.1.0'
    compile 'org.apache.commons:commons-configuration2:2.1.1'
    compile 'commons-beanutils:commons-beanutils:1.9.3'
    compile group: 'postgresql', name: 'postgresql', version: '9.1-901-1.jdbc4'
    compile group:  'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.8.7'
    compile group:  'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.7'
    compile group: 'org.apache.commons', name: 'commons-exec', version: '1.3'
    compile 'org.slf4j:slf4j-api:1.7.21'
    compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.1'
    compile "org.jfrog.buildinfo:build-info-extractor-gradle:4.4.17"
}

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

artifactoryPublish {
        publications(publishing.publications.mavenJava)
    }

artifactory {
    contextUrl = "https://artifactory.internal.com/artifactory/libs-release-local/"
    publish {
        repository {
            repoKey = "libs-release-local"
            username = project.hasProperty('artifactory_user') ? project.artifactory_user : System.getenv()['ARTIFACTORY_USER']
            password = project.hasProperty('artifactory_password') ? project.artifactory_password : System.getenv()['ARTIFACTORY_KEY']
        }
        defaults {
            publications('mavenJava')
            publishArtifacts = true
        }
    }
    resolve {
        repoKey = 'libs-release-local'
    }
}

jar {
    from {
        (configurations.runtime).collect {
            it.isDirectory() ? it : zipTree(it)
        }
    }
    manifest {
        attributes("Main-Class": "com.internal.qa.automation.file.util.DbRunUtil" )
    }
}

group = 'com.internal'
install {
    repositories.mavenInstaller {
        pom.version = '1.0'
        pom.artifactId = 'uw-data-util'
        pom.packaging = 'jar'
    }
}

test {
    def suiteXml = System.getProperty("SUITE")
    systemProperty "ENV_NAME", System.getProperty("ENV_NAME")
    useTestNG {
        if(suiteXml == "profile-smoke"){
            suites "src/test/resources/testng/groups/smoke/${suiteXml}.xml"
        }
        testLogging {
            showStandardStreams = true
            exceptionFormat "full"
            events "started", "passed", "skipped", "failed", "standardOut", "standardError"
        }
    }
}

我显然遗漏了文档中的内容。

3 个答案:

答案 0 :(得分:1)

原来我要做的就是:

plugins {
  id "com.jfrog.artifactory" version "4.4.18"
}

.....
apply plugin: "com.jfrog.artifactory"

因为我使用的是gradle版本2.1 +

答案 1 :(得分:1)

我解决了这个问题,又添加了一个插件:

plugins {
    // Apply the java-library plugin to add support for Java Library
    id 'java-library'

    id "com.jfrog.artifactory" version "4.16.1"
}

apply plugin: "com.jfrog.artifactory"
apply plugin: 'maven-publish'

我使用gradle 6.2

答案 2 :(得分:0)

尝试使用旧的gradle方法:

buildscript {
  repositories {
    jcenter()
  }
  dependencies {
    classpath "org.jfrog.buildinfo:build-info-extractor-gradle:latest.release"
  }
}

...

apply plugin: "com.jfrog.artifactory"