1
votes

I'm trying to publish an artifact to artifactory using gradle, however gradle doesn't recognize artifactoryPublish() or artifactory(). I receive the following error:

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

My gradle version 3.5

Here is my 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"
        }
    }
}

I'm apparently missing something from the documentation.

3
You don't seem to have applied any plugin that would add these methods.JB Nizet
good eye. after adding apply plugin: "com.jfrog.artifactory, I get Plugin with id 'com.jfrog.artifactory' not found.smd1000
Why don't you read the documentation? jfrog.com/confluence/display/rtf/gradle+artifactory+pluginJB Nizet
That's the page I am referring toosmd1000
So, what are the two different ways of applying the plugin? Which one did you use? None of them consists in just adding apply plugin: "com.jfrog.artifactory" to your script.JB Nizet

3 Answers

1
votes

Try using the older gradle approach:

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

...

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

Turns out all I had to do was:

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

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

since I was using gradle version 2.1+

1
votes

I solved this add one more plugin:

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'

I use gradle 6.2