Como configurar o grails 2.4.0 para resolver artefatos de JFrog Artifactory com a autenticação?

StackOverflow https://stackoverflow.com//questions/24000409

Pergunta

É um problema que a cada poucos meses ocorre.Eu faço algumas grails upgrades e o app não pode resolver meu artefatos de meu seguro artifactory repositório.Desta vez, eu fiz uma atualização para o grails 2.4.0 e ainda existe o problema.Eu configurei o meu repositório, tal como descrito na documentação do grails (o que parece muito desatualizado), mas grails não pode resolver meu dependências a partir do nosso repositório.Não autenticar corretamente.

Então, meu final de perguntas que muitas pessoas já pediram:

Como configurar o grails (atual 2.4.0) com o maven como dependência-resolução para trabalhar com uma privada maven respository (artifactory) com autenticação corretamente?O que eu tenho para escrever para a minha BuildConfig para fazê-lo funcionar?

Isso não funciona:

if (Environment.current == Environment.PRODUCTION) {

    if (grails.project.dependency.resolver == "maven") {
        mavenRepo "http://repo.myRepoHost.com/plugins-release-local/", {
            auth([
                username: "reader",
                password: "readerPw"
            ])
        }
    }

}
Foi útil?

Solução 2

Eu poderia resolver este problema e descobri por que eu sempre tive problemas com artifactory repositórios que requerem autenticação.

Há um cabeçalho http de status de problema com o artifactory.Se você já fez todo o seu artifactory privado com o Admin-> Segurança-> Geral-> Permitir a caixa de seleção Acesso Anônimo (não verificado) tudo funciona porque artifactory responde com um código de status http "401 Autorização Necessária" e grails faz outro pedido com o seu configurado credenciais de autorização que funciona bem. unchecked checkbox

Se você marcou a caixa de seleção (porque você tem tanto público como privado repositórios como eu) você começa intro problemas, porque artifactory não responde com um código de status 401 mais.Em vez disso, ele responde com "404 Não Encontrado" mesmo se artefato está no repositório, e apenas anônimo não têm acesso a ele.No access.de log que você pode encontrar "DOWNLOAD NEGADO", neste caso, e grails não fazer um segundo pedido com o configurado credenciais, porque o código de status 404.checked checkbox

Então você tem que criar separado artifactory instâncias para o seu público e privado repositórios ou temos que implementar uma nova opção de configuração para grails para apoiar um "sempre autenticar" recurso escolhido repositórios.Vou sugerir isso para o grails equipe de desenvolvimento através do grails bugtracker e eu também olhar para o artifactory desenvolvedores para construir uma alternativa para isso.

Outras dicas

A configuração seguinte é trabalhar para mim com o Artifactory

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

grails.project.dependency.resolution = {
    ...
    repositories {
        inherits true
    }
    ...
}

Observe que o repositório não está definido no grails.project.dependency.resolution a seção.
Além disso, você deve certifique-se de que o "leitor" de utilizador tem as permissões necessárias para a "plugins-lançamento-local" repositório.
Uma boa maneira de testar o repositório de instalação está verificando o Artifactory pedido/registo de acesso e monitoramento de pedidos realizados pelo Grails.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top