Dica útil para quem usa bibliotecas externas nos seus projetos Java WEB

Boa tarde a todos,

Como é padrão no mundo Java, é comum utilizarmos “milhões” de bibliotecas “jars” de terceiros nos nossos projetos, como por exemplo o Hibernate, Apache Commons, etc. Isso impacta no tamanho real do nosso projeto, imaginamos uma situação de um sistema de manipulação de áreas de fazendas, ele pode ter N bibliotecas de terceiros e o tamanho do seu projeto pode chegar facilmente em uns 100 megas brincando, imagine agora você com um servidor ou virtualização com pouco espaço ou que você tenha por exemplo 50 sistemas com funcionalidades e/ou recursos semelhantes, você tem assim muito desperdício de espaço nisso.

O que podemos fazer é utilizar o nosso próprio servidor de aplicação para guardar essas bibliotecas comuns, assim fica fácil, automaticamente todos os projetos irão compartilhar elas, caso você necessite de uma versão específica de uma biblioteca, você pode colocá-la no classpath do seu projeto.

Eu utilizo isso no meu ambiente de produção do Jetty 7.5, ele tem um diretório jetty/lib/ext/ onde eu guardo todas as minhas bibliotecas lá. Isto vale para o Tomcat também, só que no caso dele é só o diretório “tomcat/lib/”. Seguindo o exemplo de antes, se eu colocar todas os jars do projeto no servidor de aplicação, ele poderia cair para por exemplo uns 20 mega.

Algumas coisas eu não consegui deixar fora do meu projeto WEB, como por exemplo os jars do Spring framework, dá um erro de deploy dizendo que não foi possível encontrar as classes do Spring, isso em um projeto do VRaptor 3.4, enfim talvez tenha algum macete que eu até agora não encontrei.

É isso aí, fica essa dica, caso alguém precise de ajuda post nos comentários aqui.

Abraços e até a próxima.

Leituras

http://wiki.eclipse.org/Jetty/Reference/Dependencies

https://groups.google.com/forum/#!topic/liftweb/EIqEgIrFj6Y

Blog Java