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.
Posted by roanbrasil 