What is the correct way to configure grails maven authentication to Artifactory?

artifactory, grails, maven

Solution

Our shop is currently using Grails 2.3.8, and each developer keeps a external build config in our home directory that contains the following:

artifactory.username = 'username'
artifactory.password = 'password'
artifactory.repo = 'http://our.artifactory.server.com:8080/artifactory/central'
artifactory.repositoryLocation = "http://our.artifactory.server.com:8080/artifactory/libs-release-local"

Here is how we configure all of our Grails projects in our BuildConfig.groovy:

def config = new ConfigSlurper(grailsSettings.grailsEnv).parse(new File("$home/my_build_config.groovy").toURI().toURL())

grails.project.dependency.resolver = "maven"

grails.project.dependency.resolution = {

    inherits("global") {
    }

    log "error"
    checksums true
    legacyResolve false

    repositories {

        String artifactoryUrl = config.artifactory.repo
        mavenRepo(artifactoryUrl) {

            auth([
                    username: config.artifactory.username,
                    password: config.artifactory.password
            ])

            updatePolicy "always"
        }
        mavenLocal()
    }

    dependencies {

        // ...
    }

    plugins {

        // ...
    }
}

If that doesn't work, I would suggest looking at the Artifactory permission settings for your virtual repositories and user permissions in general.

Problem

What is the correct way to configure authentication to Artifactory using the Maven resolver? Currently I'm using: ``` grails.project.ivy.authentication = { repositories { mavenRepo "http://SERVER:8081/artifactory/remote-repos" } credentials { realm = "Artifactory Realm" host = "SERVER" username = "USER" password = "PASSWORD" } } grails.project.dependency.resolver = "maven" // or ivy grails.project.dependency.resolution = { // inherit Grails' default dependencies inherits("global") { // specify dependency exclusions here; for example, uncomment this to disable ehcache: // excludes 'ehcache' } log "warn" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose' checksums true // Whether to verify checksums on resolve legacyResolve false // whether to do a secondary resolve on plugin installation, not advised and here for backwards compatibility repositories { inherits true // Whether to inherit repository definitions from plugins // mavenLocal() mavenRepo id: 'Artifactory', url: "http://SERVER:8081/artifactory/remote-repos" } ``` If I change the resolver to "ivy" dependencies are downloaded. With maven resolver Artifactory request log shows 401 errors Relevant Grails documentation: http://grails.org/doc/latest/guide/conf.html#dependencyRepositories Perhaps it has not yet been updated for Maven.

Original source