Arquivo para a tag ‘dependencia’
Resolvendo dependências de sua aplicação Grails usando Ivy
Estamos fazendo o desenho do plugin do Solr para o Grails, e precisei das libs do solr/lucene. Dessa vez quis fazer diferente e usar o gerenciamento de dependências que o grails traz usando o ivy. Pra mim, que nunca tinha trabalhado com ivy antes, foi bem simples até.
Bastou eu levantar os grupos/artifactsId e versão do solr-core e do solrj (1.4) e adicionar no meu BuildConfig.groovy. Consegui estas informações no próprio wiki do solr, nesta página: http://wiki.apache.org/solr/Solrj#Maven
Depois disso, bastou adicionar um repositório para buscar os jars
repositories {
mavenRepo "http://mirrors.ibiblio.org/pub/mirrors/maven2"
}
E declarar as dependências que eu precisaria em runtime:
dependencies {
runtime 'org.apache.solr:solr-core:1.4.0'
runtime 'org.apache.solr:solr-solrj:1.4.0'
}
Gerenciamento de dependências com Grape
Mais uma maneira de se gerenciar dependências :)
Agora é a vez do Grape, um módulo construindo em Groovy que abstrai toda aquela configuração do maven/ivy que vc teria por padrão. O grande diferencial do Grape, é que ele traz essa configuração mais para perto de quem precisa dela, ou seja, no próprio código fonte!
Funciona basicamente assim, você anota o seu método que irá precisar da dependência com a anotação @Grab dizendo qual é o grupo, artefato e versão da biblioteca que você precisa e pronto! Quando a classe for carregada, esta anotação irá disparar o download desta dependência automaticamente. Os arquivos que são baixados via grape são guardados dentro do diretório do usuário na pasta .groovy/grapes
Segue um simples exemplo que depende do commons-lang 2.4 e usa um método simples da classe StringUtils para trocar o case de uma string.
import org.apache.commons.lang.StringUtils
@Grab(group='commons-lang', module='commons-lang', version='2.4')
void testGrape() {
def name = "Lucas Frare Teixeira"
println StringUtils.swapCase(name) //lUCAS fRARE tEIXEIRA
}
//Chama a execução do método
testGrape()
Veja que a únca coisa que precisamos fazer, é anotar o método com a dependência e ele fica responsável por fazer o download.
Mas, conversando com o @paulosuzart do CodeMountain, chegamos a conclusão, que sistemas de maior porte, merecem um controle de dependências mais centralizado e até por que não dizer, organizado.
Ou seja, fica a minha dica de uso do Grape para a distribuição de scripts e arquivos pequenos, para evitar aquela coisa chata de enviar jars, setar classpath, ou então ter arquivos pom que definem dependência e etc.
Para evitar esta dor de cabeça, sem dúvidas o grape é ideal!