سؤال

I have a grails 2.3.8 project and an Artifactory server.

The Artifactory server requires authentication.

BuildConfig.groovy contains:

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"

    }

    dependencies {

        runtime 'com.oracle:ojdbc6:11.2.0.1.0'
        build "commons-dbcp:commons-dbcp:1.4"

        compile 'org.jadira.usertype:usertype.jodatime:1.9'
        compile "net.sf.ehcache:ehcache-core:2.4.6"
    }

    plugins {
        runtime ":hibernate:3.6.10.13"
        runtime ":resources:1.2.7"

        build ":tomcat:7.0.52.1"
        compile ':cache:1.1.5'

        compile ":joda-time:1.4"
    }
}

When I run:

grails runApp

I get:

Starting process on MYPC/IPADDRESS
Loading Grails 2.3.8
|Configuring classpath
Error |
Resolve error obtaining dependencies: Failed to read artifact descriptor for xalan:serializer:jar:2.7.1 (Use --stacktrace to see the full trace)
Error |
Required Grails build dependencies were not found. This is normally due to internet connectivity issues (such as a misconfigured proxy) or missing repositories in grails-app/conf/BuildConfig.groovy. Please verify your configuration to continue.

Looks like the Ivy log config does not apply to maven. How do I turn up the logging? Why are my artifacts not resolving?

هل كانت مفيدة؟

المحلول 4

In Artifactory checked the "Allow Anonymous Access" option in Admin / Sercurity / General

Still doesn't answer why authentication is not working.

I'll raise a separate question on authentication. What is the correct way to configure grails maven authentication to Artifactory?

نصائح أخرى

A little late on the response, but I ran into this type of issue and traced it to a setting that tells Artifactory to respond with a 404 instead of 401 when someone is requesting an artifact from a repo they can't access.

My guess is that Grails does not preemptively authenticate during dependency resolution, so it never tries to use the supplied credentials in the BuildConfig.groovy after getting the 404.

Try turning off that setting as it fixed the issue for me.

Try changing:

grails.project.ivy.authentication = {
    repositories {
        mavenRepo "http://SERVER:8081/artifactory/remote-repos"

    }
    credentials {
        realm = "Artifactory Realm"
        host = "SERVER"
        username = "USER"
        password = "PASSWORD"
    }
}

to

credentials {
    realm = "Artifactory Realm"
    host = "SERVER"
    username = "USER"
    password = "PASSWORD"
}

The recent change from Ivy to Maven is not always reflected 100% correctly in the docs. You are using maven so I don't think the ivy setting will work here.

Try the following configuration in your BuildConfig.groovy:

grails.project.dependency.resolver = "maven"
grails.project.ivy.authentication = {
    repositories {
        mavenRepo('http://SERVER:8081/artifactory/remote-repos') {
             auth([
                realm: "Artifactory Realm",
                username: 'user',
                password: 'pass'
            ])
        }
    }
}

grails.project.dependency.resolution = {
    ...
    repositories {
        inherits true
    }
    ...
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top