2014-05-15 10 views
6

Wie kann die Authentifizierung für Artefactory mit dem Maven-Resolver korrekt konfiguriert werden?Wie ist die korrekte Konfiguration der Grails-Maven-Authentifizierung für Artifactory?

Derzeit verwende ich:

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" 

    } 

Wenn ich den Resolver ändern "Efeu" Abhängigkeiten heruntergeladen werden.

Mit Maven Resolver Artifactory Anforderungsprotokoll zeigt 401 Fehler

Relevante Grails Dokumentation: http://grails.org/doc/latest/guide/conf.html#dependencyRepositories

Vielleicht ist es noch nicht für Maven aktualisiert.

+0

habe ich das gleiche Problem mit Grails 2.4. 0, hast du eine Lösung gefunden? – whitenexx

Antwort

4

derzeit Unser Geschäft Grails unter Verwendung 2.3.8, und jeder Entwickler führt eine externe Build-Konfiguration in unserem Home-Verzeichnis, das Folgendes enthält:

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" 

Hier ist, wie wir alle unsere Grails Projekte in unserer BuildConfig.groovy konfigurieren:

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 { 

     // ... 
    } 
} 

Wenn das nicht funktioniert, würde ich vorschlagen, an den Artifactory Berechtigungseinstellungen für die virtuelle Repositorys und Benutzerberechtigungen der Suche in Allgemeines.

+0

Ich erhalte den folgenden Fehler, wenn ich folgendes versuche: groovy.lang.MissingMethodException: Keine Signatur der Methode: groovy.util.ConfigSlurper $ _parse_closure5.auth() ist anwendbar für Argumenttypen: (java.util.LinkedHashMap) Werte: [[Benutzername: Benutzername, Passwort: Passwort]]] Mögliche Lösungen: mit (groovy.lang.Closure), wait(), run(), any(), dump(), wait (long) –

+0

Wie sieht die Konfigurationsdatei aus, die der ConfigSlurper liest? – ZDJ

+0

Jetzt arbeiten. Ich hatte den Resolver auf "Master" statt "Maven" eingestellt. –

3

In BuildConfig.groovy verwenden:

grails.project.repos.default = "AT" 

grails { 
    project { 
     repos { 
      AT { 
       url = "http://localhost:8081/artifactory/AT/" 
       username = "bob" 
       password = "MyUnguessablePassword" 
      } 
     } 
    } 
} 

Die doco etwas versteckt ist, finden Sie unter: http://grails-plugins.github.io/grails-release/docs/manual/guide/single.html#repositories

an einem Beispiel unter: http://wordpress.transentia.com.au/wordpress/

+0

So speichern Sie das Passwort in Ihrem Code? : s – hfm

+0

Der v3-Doco sagt: "Alle Konfigurationsoptionen, die im nächsten Abschnitt beschrieben werden, können entweder in die BuildConfig.groovy-Datei Ihres Projekts oder in Ihr persönliches ~/.grails/settings.groovy gehen. Letzteres ist besonders nützlich zum Speichern von Zugangsdaten seit dem Die Datei wird in der Regel nicht in einem gemeinsamen Quell-Repository gespeichert, so dass diese Informationen vertraulich bleiben. " Du bezahlst also dein Geld und nimmst deine Wahl ... –

2

Eine Alternative ist die folgende in ~/.grails/settings.groovy

myArtifactory{ 
    username = 'some_user' 
    password = 'some_pass' 
} 

und als Maven-Repository zu setzen ist so konfiguriert, wie

mavenRepo("http://my-artifactory") { 
     auth([ 
       username: grailsSettings.config.myArtifactory.username, 
       password: grailsSettings.config.myArtifactory.password 
     ]) 

     updatePolicy "always" 
    } 
Verwandte Themen