Arquivo por categoria POM

Gerando um .jar com as dependências em um projeto Maven

Uma das coisas mais incovenientes para iniciantes em Maven é ao gerar um .jar da aplicação as dependências não serem incluídas no .jar final ou o .jar não inicializar a execução. Entretanto algumas configurações bem simples podem resolver esse problema e incluir as dependências corretamente. Aproveitamos o projeto do post anterior e adicionamos o trecho que código abaixo.


    <!-- CONFIGURAÇÕES DE BUILD RESPONSÁVEIS POR INCLUIR AS DEPENDÊNCIAS NO .JAR FINAL -->

    <build>
        <plugins>
           <!-- DEFINE O PLUGIN MAVEN RESPONSÁVEL POR COMPILAR O PROJETO SUA VERSÃO E O JDK UTILIZADO  -->
           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>  

            <!-- DEFINE AS CONFIGURAÇÕES DO MAVEN ASSEMBLER  -->
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>

                       <!-- DEFINE QUAL É A CLASSE MAIN DA APLICAÇÃO  -->
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <mainClass>br.com.semeru.datesynchronizer.RecoveryDateWitchURL</mainClass>
                        </manifest>
                    </archive>

                    <!-- ADICIONO AO NOME DO JAR FINAL UM COMPLEMENTO DIZENDO
                         QUE ELE CONTÉM AS DEPENDÊNCIAS  -->

                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>

                        <!-- DETERMINO QUE O JAR GERADO INCLUIRÁ AS DEPENDÊNCIAS E ELAS 
                        SERÃO EMPACOTADAS JUNTO COM O PROJETO EM UM ÚNICO JAR  -->

                        <id>make-my-jar-with-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

Após executarmos a build veremos algo similar a imagem abaixo, são criados dois .jars um com e outro sem as dependências. Esse jar pode ser startado por duplo clique, pelo DOS ou pelo Shell do GNU/Linux.

MavenWithDependencies

Além disso se abrirmos o jar com uma ferramenta como o winrar veremos que além das classes no nosso projeto, assinalados em vermelho, temos também outros diretórios, assinalados em azul, contendo as dependências e as classes compiladas das mesmas como podemos observar nos pontos indicados pelas setas.

MavenWithDependencies2

Se você tem alguma dúvida relacionada ao conteúdo desse post sinta-se a vontade de comentar, criticar e/ou contribuir com o seu comentário. Além disso você pode acessar todo o código fonte desse projeto através do GitHub.

Tags: ,

Iniciando Se No JSF – 02 – Configurando O Ambiente E Criando O Primeiro Projeto

Nesse segundo post do Curso De JSF Do Zero À Nuvem Eu explico como instalar e configurar as duas IDE’s mais utilizadas no mercado, os plugins de versionamento e a criação do primeiro projeto.

Inicialmente explico onde baixar e como instalar a IDE Eclipse e os plugins EGit e Github MyLyn Connector para versionar o projeto no GitHub. É algo relativamente simples mas que pode ajudar muito alguém iniciante.


Instalando O Eclipse E Os Plugins m2eclipse, Subclipse E EGit





Posteriormente eu explico como instalar o Netbeans e configurar o Apache Tomcat. Diferentemente do Eclipse não é necessário instalar nenhum plugin.


Instalando O Netbeans E Configurando O Tomcat





Por fim criamos um repositório no GitHub e criamos nosso primeiro projeto.


Criando O Repositório E Iniciando O Projeto Maven



Observação importante:

Se você pretende trabalhar com o Eclipse ou mesmo com as duas IDE’s recomendo que você edite o POM e altere tudo que está entre as tags plugins de modo que fique igual ao trecho abaixo.

<plugins>           
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.6</source>
            <target>1.6</target>
            <encoding>${project.build.sourceEncoding}</encoding>
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
            <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <configuration>
            <encoding>${project.build.sourceEncoding}</encoding>
        </configuration>
    </plugin>
</plugins>

No mais boa sorte e bons códigos sem bugs.

Tags: , , , ,

Iniciando Se No JSF – 01 – Apresentação, O Projeto E As Tecnologias

Olá. Este post é para apresentar o curso de JSF a vocês. Quando eu comecei a trabalhar com JSF eu usava apostilas na internet, video aulas no Youtube, livros e vivia correndo atrás de todo mundo que pudesse me ajudar a entender melhor o framework. Aprendi bastante de lá pra cá e como eu não posso retribuir diretamente a todos que me ajudaram nem outros que como eu hoje precisam de ajuda então decidi gravar uma série de video aulas a respeito. Creio que esse é a melhor forma de contribuir, e espero que ajude você a começar com JSF.

Além de JSF você aprenderá o básico de uma série de outras tecnologias que vão desde o Hibernate, Primefaces, Spring Security, Maven, Tomcat, Netbeans, Eclipse e além disso ao final do projeto você aprenderá como fazer o deploy na nuvem. No vídeo abaixo eu apresento o resultado final de todo o projeto e as tecnologias com as quais iremos trabalhar.


Curso De JSF Do Zero À Nuvem – O Projeto E As Tecnologias Envolvidas

No segundo vídeo você irá entender os principais conceitos teóricos do JSF. Além disso você terá dicas de por onde começar com o JSF.


Entendendo O JSF E Dicas

Além dos livros indicados no vídeo existem muitas apostilas gratuitas na web. Temos uma da Algaworks que apesar de abordar a versão 1.2 do JSF é bem interessante para quem está iniciando. Temos duas muito boas da K19 uma de JSF com JPA e outra de JSF com EJB a Caelum surpreendentemente não tem nada sobre o JSF talvez seja pra puchar a sardinha do VRaptor. Outras apostilas como a Do Luis Fernado e a do Diego Rezende que podem ser baixadas do Scribd. Além dessas uma rápida pesquisa no Google pode lhe mostrar uma infinidade de materiais a respeito. No Youtube além das minhas vídeo aulas existem outras que podem ajudar bastante quem está começando.

Se você quiser baixar os slides da apresentação basta ir ao SlideShare e fazer isso.

Quero destacar também que os fontes desse curso podem ser baixados do GitHub. Serão feitos posts correspondentes às video aulas e recomendo que você acompanhe por que assim que possível irei realizando posts para complementar o que foi falado nos vídeos.

Tags: , , , ,

Entendendo o Apache Maven

Apache Maven
Olá. Percebi que muitas pessoas chegaram ao post sobre o Apache Archiva procurando por Apache Maven. Sendo assim decidi fazer um post sobre o Maven para ajudar aqueles que desconhecem esse poderoso framework.
Bom o Maven é mais conhecido por gerenciar dependências. Com o Maven não é mais necessário acessar vários sites baixar uma série de bibliotecas adicioná-las ao projeto e quando tudo não vai bem procurar bibliotecas que você se esqueceu. Além disso, se for trabalhar em equipe, você enfrentará outros problemas como ter que colocar sempre uma serie de jars junto ao projeto quanto for passar o código para outros desenvolvedores. Não raramente acaba ficando um ou ouro jar para traz e vira um inferno procurar os jars faltantes.
Por outro lado se você utiliza Subversion ou GIT (o que eu espero que você esteja fazendo) você reduzirá bastante o problema com bibliotecas. Entretanto tem-se um outro problema depois de muitos commits de jars junto com o projeto seu repositório vai ficando mais e mais inchado. Enfim você ocupará espaço desnecessário no repositório.
O Maven resolve quase que completamente esse problema, na medida em que com ele você passará a commitar apenas código. Bom o Maven procura as dependências declaradas em um arquivo XML chamado POM (Project Object Model), baixa todas elas e armazena-as em um repositório local localizado no diretório .m2 dentro do diretório do usuário, dessa forma todo projeto que utilize uma dependência em comum irá compartilha-la a partir do diretório .m2. Desse modo inclusive o tráfego na rede é reduzido na medida em que não é necessário ficar baixando sempre a mesma dependência. Ainda assim é interessante utilizar uma ferramenta como o Nexus para fazer cache dessas dependência na rede interna da empresa minimizando o tráfego.
Além de gerenciar dependências o Maven possibilita dentre outras coisas montar uma arquitetura básica para vários tipos de aplicação com apenas alguns comandos. Espero que este post seja um pontapé inicial para que você comece a utilizar o Apache Maven. Num post posterior irei abordar a estrutura do POM e talvez o próprio Nexus.

Tags: , , , , , , ,