Posts

Showing posts with the label Maven

BOM

Image
BOM(Bill of Materials) is an interesting technique to simplify dependency management. Dependency management is often a lost discipline nowadays and often developers dont care about dependencies. BOM is a way to make dependency management easier, however like anything in this world it can be abused. So be careful to not create a massive monolithic BOM with all your dependencies because that would be another microservices killer . 

Kotlin with Maven

Image
Kotlin is a modern language on the JVM. Created by JetBrains . Kotlin got popular with Android and Gradle however I would say it's an interesting solution also well for backend services. Kotlin has some interesting design choices and handy APIs and a good eco-system, which I will be covering in the next posts. Today I want to show how we can get Kotlin working on IntelliJ IDEA using maven as a build system. Most of the examples you will set out there on the web will be Gradle-based. Don't get me wrong Gradle rocks but maven still the dominant build system in Java land.  So we will see how to configure the build plugins and all dependencies needed in order to make no only Kotlin builds but also integration with Junit and unit tests. So Let's get started. The Video The Code https://github.com/diegopacheco/kotlin-playground/tree/master/kotlin-1.4-fun Cheers, Diego Pacheco

Setting up a full JVM Env with Vagrant: Java 8, Scala 2.11, Groovy 2.4, Clojure 1.6, Maven 3.3, Gradle 2.4, Sbt 0.13 and Lein

Image
On the previous posts i show how to use docker , docker-compose and nodejs with vagrant now let`s do a full jvm env :-) This setup is pretty easy and straightforward for you however it could take some time depending of your internet bandwidth because we gonna download several components. Remember you need to have Vagrant installed already, this time we gonna need more than just the Vagrant file because java, scala, clojure for instance require we setup environment variables so we gonna need change some files for clojure and sbt  in order to make everything work smoothly.

Governança SOA com Mule Galaxy parte 2: Maven e Spring

Image
No post anterior contei sobre a importantancia da governança em uma adoção de SOA. Também comentei um pouco sobre o Mule Galaxy, uma solução open source para governança SOA em tempo de runtme. Neste post vou mostrar como registrar ativos no Mule Galaxy usando o plugin do maven que o Galaxy prove, além disso vou mostrar como recuperar as configurações do Spring Framework. O que vamos fazer? Criar um projeto no maven que consegue fazer deploy de ativos no Mule Galaxy usando o plugin de publicação do Galaxy para o Maven. Vamos criar um bean no spring e um arquivo de configuração deste bean para o Spring e também vamos registrar este bean como ativo no Galaxy bem como um WSDL de um webservice. Instalando e Rodando o Mule Galaxy Basta baixar o war do Galaxy e colocar no seu servidor de web, eu vou utilizar no Jetty, mas poderia se outro se você quizer por exemplo, você deve rodar a solução com JDK 6 update 10 ou superior para não ter problemas com XML. Estou usando a versão 1...

Construindo um Repositório Corporativo com Artifactory

Image
Ainda me lembro do inferno das DLLs quando trabalhava mais ativamente com produtos da Microsfot. Naquela epoca sofriamos com problemas de dependêcias. Quando comecei a trabalhar com Java sofri o mesmo problema de uma forma um pouco diferente mas na essência era a mesma coisa. Em java o problema tem o nome de inferno dos jars . É incrével ainda ver empresas que em 2010 ainda passam por este tipo de problema em Java. Isto por que existem duas soluções que resolvem este tipo de problema. Estou falando do Apache Maven 2 e do Apache Ivy . As suas soluções da apache provem a funcionalidade de gestão de dependências. É comum ver uma pasta chamada *lib* no classpath das aplicações java com mais de 100 jars, sendo que 70% ou mais não serve pra nada, nunca foi usada, nunca se quer foi tocado pelo classloader e dificilmente ira ser todado, mas por que as pessoas ainda fazem isso ? Por dois motivos:   Problemas de Depedências : Todo mundo ja deve ter visto o famoso ClassNotFoundExce...

SCA com Java Parte 2

No post anterior eu falei um pouco sobre SCA e como esse padrão funciona. Agora vou mostrar um exemplo simples de como implementar um composite SCA feito em Java utilizando o Fabric3 .Neste exemplo você vai precisar de: JDK 6 Fabric3 Standalone Server Profile Web do Fabric3 Maven 2 Neste exemplo vou criar um serviço composto de utilidades que será composto pelo serviço de Data. O Serviço de data nada mais faz do que informar a data atual no servidor. Sem mais delongas vamos ao código dos serviços. Cada serviço tem a sua interface de negócio(contrato) e a sua implementação em Java. DateService.java package com.blogspot.diegopacheco.sca.services; /** * Interface do servico de datas * * @author Diego Pacheco * @version 1.0 * @since 17/05/2009 * */ public interface DateService { String getDate(); } Agora vamos a implementação Java. DateServiceImpl.java package com.blogspot.diegopacheco.sca.services; import java.util.Date; /** * Implementação do serv...

Scripts Groovy

Hoje vim compartilhar alguns scripts Groovy. Vou postar 3 scripts sendo que um é muito simples mas tem o seu valor e os outros dois tem mais utilidade prática, todos servem para que o leitor possa aprender mais sobre Groovy. Atualmente se tenho que fazer um script para fazer alguma coisa eu não penso duas vezes e uso Groovy, por que é simples, fácil e o código fica limpo e claro. Os scripts são esses: wcSvnCls.groovy pomDepReader.groovy toJSlash.groovy O primeiro script é de utilizada geral, o segundo script serve para quem mexe com o controle de versão Subversion e o terceiro para quem usa Maven 2. Esses scripts são válidos para windows ou Linux, não testei no Mac mas deve rolar também. O primeiro Script o toJSlash.groovy normaliza as barras, sabendo que as barras do windows são "\" e as do Java e Linux "/" então esse scriptzinho faz essa conversão: /** * Script Groovy que faz a conversao das barras do windows para as barras do java/linux * Ess...

JBoss 5.0.1.GA, EJB3, Maven2 e Cargo Juntos e na Prática

Neste post vou mostrar como criar um projeto EJB 3 bem simples usando Maven 2. Vamos fazer o deploy no JBoss 5.o.1.GA através do plugin do maven do cargo. Além disso vamos criar um projeto cliente que acessa o EJB criado através de JNDI. Meu objetivo é mostrar de uma maneira simples e que funciona :) como usar maven 2 com projetos ejb3, de barbada vamos fazer o deploy no JBoss 5.0.1.GA, no fim do post você irá encontrar os códigos fontes e bem como as dependências(jars) da aplicação cliente. Criar uma aplicação Java com Maven é realmente muito fácil mais quando falamos de fazer um deploy no servidor com o cargo usando o plugin do maven as coisas não são tão simples, por que a documentação do Cargo não é 100% intuitiva e faltam exemplos práticos de como usar as configurações. Além disso o JBoss 5 ainda não está 100% com o maven 2, mais para frente do post vocês irão entender o por que disso. Cuidado com o JDK Recomendo que você use um JDK acima do JDKu10 , eu estou usando no mom...

Mais Poder ao Maven com Archiva

O Maven é uma excelente solução de gerência de configuração para Java, mas você não deve utiliza-lo sozinho, para tirar mais proveito do maven você irá precisar de uma solução de: hospedagem de dependências e proxy. Essa solução é o Archiva , neste post vou mostrar como instalar a solução e bem como a forma mais adequada de utiliza-lo. Em um post anterior eu já tinha mostrado como instalar o Archiva, juntamente com um servidor de Build Continuo e Maven 2. Então se você quiser ver como instalar o Archiva sugiro que de uma olhada neste post . Agora vamos ver a forma mais adequada de lidar com os repositórios e como que o Archiva e o Maven faz isso, vamos discutir a estrutura interna de repositórios do maven e bem como resolver pequenos problemas que você pode passar. Resolução de Dependências com Maven O maven resolve as dependências da seguinte forma. Primeiro ele procura no seu repositório local que fica no $USER_HOME/.m2 caso ele não ache a dependência ali ele iria para web ...

10 Motivos para Você Usar Maven

Image
Qual desenvolvedor Java que já não fez um script ant ? Ant é uma poderosa solução escrita em Java para automação de build. Eu já usei muito Ant, não tenho nada contra a solução, mas em um projeto você precisa muitos mais do que build. Os scripts ant tem o seu valor, na verdade todo bom script seja ele em ant, bash, groovy ou no que for tem seu lugar ao sol. Não acho perda de tempo escrever esses scripts, mas acho absurdo ter que reescrever a mesma coisa várias vezes. Na prática é isso que acontecia. Quando se inicia um projeto Java se tem um setup muito pesado e que as vezes demora bastante. Por que tem que se criar toda uma infra-estrutura de diretórios, tem que se configurar o framework A,B,C e D para funcionar com o X,Y e Z, bom quem já fez isso sabe a novela que é. Um desenvolvedor novo? Caos No mínimo 2 dias configurando e instalando coisas na máquina do desenvolvedor. Para variar você esquece de algo e começa a dar problemas de ambiente, assim a brincadeira vai até que as cosias ...

Maven 2.0.8 + Archiva 1.0.1 + Tomcat 6.0.16

Image
Pessoal hoje vamos instalar e configurar o Apache Maven 2 com o Apache Archiva . Maven é um poderosa ferramenta para gerencia do ciclo de vida de uma aplicação a partir da criação do projeto até mesmo o momento de fazer um release. Archiva é um front-end gráfico web para repositório do maven, assim você configura o Maven para pegar as bibliotecas no repositório local(Archiva) e se não existir lá o Archiva vai baixar nos repositórios remotos as dependências necessárias. Vamos ver como instalar e configurar o Maven em conjunto com Archiva. Requerimentos Para o exemplo usarei o JDK 6.0, mas funciona com JDK 5.0 também. Estou usando windows XP. Maven 2.0.8 e Archiva 1.0.1 e Apache Tomcat 6.0.16. Maven 2 No site do Maven 2 você deve baixar o versão 2.0.8 e instalar extrair no C:\ após isso você deve criar uma variável de ambiente chamada: M2_HOME essa deve apontar para a instalação do Maven 2 que você acabou de instalar. A pós isso adicione na variável de ambiente PATH a seguinte in...

Spring Dynamic Modules with Maven2: Um exemplo prático

Como prometido estou postando um dos testes que fiz com Spring e Osgi . Faz uns 30 dias que eu tinha feito esses testes porem não tive tempo de postar. Em sua postagem recente Carlos E. Perez fez suas apostas para as 5 tecnologias que iriam bombar em 2008, concordo com a maioria delas. O que chama atenção no post de carlos: Top Five Java Technologies that Didn't Make the List and Why é que Osgi aparece na lista dele, claro, na lista das tecnologias que você veria estudar. Isso não é por acaso em 6 de fevereiro Mark New do JBoss confirma através de entrevista que o JBoss ira criar sua implementação de Osgi para o container. Claro que além disso tudo existe o projeto Spring Dynamic Module que é um projeto de integração do Spring com Osgi. Agora vamos ver um exemplo simples de Spring DM com Maven2, maven é um framework da apache para facilitar a gerencia de configurações e ciclo de build de um projeto. Foi escolhido por que facilita os meus testes com Osgi e além disso o Spring ...