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.
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.
In BuildConfig.groovy, use:
grails.project.repos.default = "AT"
grails {
project {
repos {
AT {
url = "http://localhost:8081/artifactory/AT/"
username = "bob"
password = "MyUnguessablePassword"
}
}
}
}
The doco is a bit hidden away, see: http://grails-plugins.github.io/grails-release/docs/manual/guide/single.html#repositories
A worked example is at: http://wordpress.transentia.com.au/wordpress/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With