2014-05-15 18 views
6

Jaki jest prawidłowy sposób konfigurowania uwierzytelniania dla Artifactory za pomocą przelicznika Maven?Jaki jest poprawny sposób konfigurowania uwierzytelniania Grails maven do Artifactory?

Obecnie używam:

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" 

    } 

Jeśli zmienię rozpoznawania nazw do „bluszcz” Zależności są pobierane.

Z Maven przelicznika żądanie Artifactory dziennika pokazuje 401 błędy

Stosowna dokumentacja Grails: http://grails.org/doc/latest/guide/conf.html#dependencyRepositories

Być może nie zostało jeszcze zaktualizowane do Maven.

+0

mam ten sam problem z Grails 2.4. 0, czy znalazłeś rozwiązanie? – whitenexx

Odpowiedz

4

Nasz sklep jest obecnie za pomocą Grails 2.3.8, a każdy programista przechowuje konfigurację kompilacji zewnętrznej w naszym katalogu domowym, która zawiera:

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" 

Oto jak skonfigurować wszystkich naszych projektów Grails w naszej 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 { 

     // ... 
    } 
} 

Jeśli to nie zadziała, chciałbym zaproponować spojrzenie na ustawienia uprawnień Artifactory dla wirtualnych repozytoriów i uprawnieniami użytkowników w generał.

+0

Otrzymuję następujący błąd, gdy próbuję tego: groovy.lang.MissingMethodException: Brak sygnatury metody: groovy.util.ConfigSlurper $ _parse_closure5.auth() ma zastosowanie dla typów argumentów: (java.util.LinkedHashMap) wartości: [[nazwa użytkownika: nazwa użytkownika, hasło: hasło]] Możliwe rozwiązania: z (groovy.lang.Closure), wait(), run(), any(), dump(), czekaj (długo) –

+0

Jak wygląda plik konfiguracyjny, który czyta ConfigSlurper? – ZDJ

+0

Działa teraz. Kazałem resolverowi ustawić "master" zamiast "maven". –

3

W BuildConfig.groovy, użyj:

grails.project.repos.default = "AT" 

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

doco jest nieco ukryte, patrz: http://grails-plugins.github.io/grails-release/docs/manual/guide/single.html#repositories

ugniataniu przykładem jest pod adresem: http://wordpress.transentia.com.au/wordpress/

+0

Więc przechowujesz hasło w swoim kodzie? : s – hfm

+0

Dokumentacja v3 doco: "Wszystkie opcje konfiguracji opisane w następnej sekcji można albo przejść do pliku BuildConfig.groovy twojego projektu, albo do osobistego ~/.grails/settings.groovy. Ten ostatni jest szczególnie przydatny do przechowywania poświadczeń, ponieważ plik zazwyczaj nie jest przechowywany we współdzielonym repozytorium źródłowym, dzięki czemu łatwo jest zachować poufność tych informacji. " więc płacisz pieniądze, a Ty wybierasz ... –

2

Jedną z alternatyw jest umieszczenie następujących w ~/.grails/settings.groovy

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

i niż repozytorium maven jest skonfigurowany jak

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

     updatePolicy "always" 
    } 
Powiązane problemy