A Magia do Maven – Um projeto J2SE – parte 1

Antes de começar meu POST, gostaria de parabenizar a faculdade UNIME e aos profissionais da Bahia pelo evento: www.linguagil.com.br . Realmente esse evento promete, começando amanhã com cursos e vários nomes da comunidade de Analistas de todo o Brasil, palestrando, ministrando mini-cursos. Bom hoje no meu post irei falar sobre o Apache Maven que é nada mais nada menos do que uma ferramenta de automação e gerenciamento de projetos. Eu utilizo o Eclipse para o desenvolvimento de aplicativos Java e seus plugins, e sempre que precisava, eu gerava por ele os projetos e adicionava as libs na “mão”. Um puta grande trabalho diga-se de passagem. Então precisei fazer o desenvolvimento Jersey, que um post para outro dia. E pesquisei em como gerar projetos Jersey e acabei encontrando na comunidade o Maven que auxilia na geração utilizando ARCHETYPES e é muito útil.

Antes de tudo instale o Maven2 no seu computador, depois para gerar um projeto básico como por exemplo. A diferença dele para o Ant é simplicidade e escalabilidade, e achei muito mais útil .

Um exemplo de um arquivo pom.xml abaixo.

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.sonatype.mavenbook</groupId>
  <artifactId>my-project</artifactId>
  <version>1.0</version>
</project>

Para instalar o Maven no windows: Instale por exemplo aqui :

C:\Program Files\apache-maven-2.2.1 

depois de instalado set as variáveis de ambiente

C:\Users\tobrien > set M2_HOME=c:\Program Files\apache-maven-2.2.1
C:\Users\tobrien > set PATH=%PATH%;%M2_HOME%\bin

Para instalar no Linux:
Instale e export as variáveis de ambiente conforme abaixo:

export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:${PATH}

Existe um plugin para o eclipse que se chama Maven2Eclipse, quem quiser é só baixar no site da Sonatype ou anexar esse link no eclipse e depois instalar: http://m2eclipse.sonatype.org/

Para gerar um exemplo simples e genérico de um projeto Maven basta adicionar isto na linha de comando:

$ mvn archetype:generate -DgroupId=org.sonatype.mavenbook.ch03 \
                                         -DartifactId=simple \
                                         -DpackageName=org.sonatype.mavenbook \
                                         -Dversion=1.0-SNAPSHOT
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO]    task-segment: [archetype:generate] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] Preparing archetype:generate
[INFO] No goals needed for project - skipping
[INFO] Setting property: velocimacro.messages.on => 'false'.
[INFO] Setting property: resource.loader => 'classpath'.
[INFO] Setting property: resource.manager.logwhenfound => 'false'.
[INFO] [archetype:generate {execution: default-cli}]
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart \
       (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
...
12: internal -> maven-archetype-mojo (A Maven Java plugin development project)
13: internal -> maven-archetype-portlet (A simple portlet application)
14: internal -> maven-archetype-profiles ()
15: internal -> maven-archetype-quickstart ()
16: internal -> maven-archetype-site-simple (A simple site generation project)
17: internal -> maven-archetype-site (A more complex site project)
18: internal -> maven-archetype-webapp (A simple Java web application)
19: internal -> jini-service-archetype (Archetype for Jini service project creation)
Choose a number: (...) 15: : 15
Confirm properties configuration:
groupId: org.sonatype.mavenbook.ch03
artifactId: simple
version: 1.0-SNAPSHOT
package: org.sonatype.mavenbook.ch03
 Y: : Y
...
[INFO] Parameter: groupId, Value: org.sonatype.mavenbook.ch03
[INFO] Parameter: packageName, Value: org.sonatype.mavenbook.ch03
[INFO] Parameter: package, Value: org.sonatype.mavenbook.ch03
[INFO] Parameter: artifactId, Value: simple
[INFO] Parameter: basedir, Value: /private/tmp
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] BUILD SUCCESSFUL

A estrutura será basicamente essa

simple/
simple/pom.xml
      /src/
      /src/main/
          /main/java
      /src/test/
          /test/java

Para compilar entre na pasta

cd simple
mvn install

Depois disso para rodar é simples, dentro do projeto tem uma pasta target, quando é compilado ou gerado algum war o target é para onde irá o seu jar nesse caso ou war, ou ear e por ae vai…

$ java -cp target/simple-1.0-SNAPSHOT.jar org.sonatype.mavenbook.App
Hello World!

Esse seria o exemplo do pom.xml do projeto

<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.sonatype.mavenbook.ch03</groupId>
  <artifactId>simple</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>simple</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

Bom por hoje é só, vou preparar um material para fazer algo do tipo do site do scriptlandia.

Obrigado aos navegantes e deixe suas sugestões de artigo.

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.