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!
Novo post! Gerenciamento de dependências com #grape. Facinho facinho: http://tinyurl.com/ybz4ze2
Lucas Teixeira
30 Oct 09 at 15:49
RT @lucastex: Novo post! Gerenciamento de dependências com #grape. Facinho facinho: http://tinyurl.com/ybz4ze2
Paulo Suzart
30 Oct 09 at 15:50
Terminei o post sobre #grape, pra quem quiser conhecer, acesse: http://tinyurl.com/ybz4ze2
Lucas Teixeira
30 Oct 09 at 15:52
Eu já ia comentar que isso ficaria meio bagunçado num projeto, quase antes sem ler o parágrafo que fala disso.
Felipe Cypriano
30 Oct 09 at 16:02
@Felipe,
Realmente imagina só um projeto que precisa de 20 ou 30 libs, ter que depender de @Grab pra cá e pra lá. Vai acabar se tornando outro pesadelo…
Mas sinceramente, a idéia de poder fazer scripts e não ter que se preocupar com a distribuicao de uma ou duas libs para fazer funcionar me agrada.
:)
Lucas Teixeira
30 Oct 09 at 16:07