Access Keys:
Skip to content (Access Key - 0)
 
Maven 4 Continuous Integration - Parte II

Olá Amigos do Sou Java: Este artigo é o segundo da Série Maven 4 Continuous Integration.
Eu espero que seja útil a todos vocês e fiquem a vontade para me escrever caso fiquem com duvidas.

No nosso primeiro artigo ensinamos a configurar o Maven, criar um projeto web do início e preparamos
o ambiente para realizar o deploy no nosso servidor de aplicações Tomcat 6. 
http://www.soujava.org.br/display/v/Maven+4+Continuous+Integration+-+Parte+I

Hoje vamos criar 3 projetos do zero, vamos integrar os projetos com o Maven em uma rotina de deploy e adicionaremos algumas dependencias.

1) soujava: este projeto fica responsável pela camada de visao: jsps, arquivos de configuração, properties e ManagedBeans.

2) soujava_comuns: este projeto fica responsável pelas classes de Value Object e Interfaces da Facade.

3) soujava_modelo: este projeto fica responsável pelas regras de negócio: Managers e Implementações da Facade.

Vamos ao que interessa, execute os seguintes comandos em uma janela do MS-DOS:

1) mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp
-DgroupId=br.org.soujava -DartifactId=soujava
2) mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=br.org.soujava -DartifactId=soujava_comuns
3) mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=br.org.soujava -DartifactId=soujava_modelo 

Algo semelhante a isto deve aparecer:

[INFO] Parameter: groupId, Value: br.org.soujava
[INFO] Parameter: packageName, Value: br.org.soujava
[INFO] Parameter: basedir, Value: C:\maven\tst
[INFO] Parameter: package, Value: br.org.soujava
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: artifactId, Value: soujava_modelo
[INFO] ********************* End of debug info from resources from generated POM
 ***********************
[INFO] OldArchetype created in dir: C:\maven\tst\soujava_modelo
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7 seconds
[INFO] Finished at: Wed Oct 01 13:59:07 BRT 2008
[INFO] Final Memory: 7M/13M
[INFO] ------------------------------------------------------------------------ 







Após criarmos os 3 projetos é preciso preparar o ambiente para o eclipse:

 1) C:\maven\tst\soujava>mvn eclipse:eclipse
INFO Scanning for projects...
INFO Searching repository for plugin with prefix: 'eclipse'.(...)INFO BUILD SUCCESSFUL
INFO ------------------------------------------
INFO Total time: 2 seconds
INFO Finished at: Wed Oct 01 14:01:34 BRT 2008
INFO Final Memory: 4M/9M
INFO ------------------------------------------
 
 
2) C:\maven\tst\soujava_comuns>mvn eclipse:eclipse
INFO Scanning for projects...
INFO Searching repository for plugin with prefix: 'eclipse'.
INFO -------------------------------------------------------
(...)
INFO BUILD SUCCESSFUL
INFO -------------------------------------------
INFO Total time: 1 second
INFO Finished at: Wed Oct 01 14:02:38 BRT 2008
INFO Final Memory: 3M/7M
INFO -------------------------------------------
 
 
3) C:\maven\tst\soujava_modelo>mvn eclipse:eclipse
INFO Scanning for projects...
INFO Searching repository for plugin with prefix: 'eclipse'.
INFO -------------------------------------------------------
(...)
INFO BUILD SUCCESSFUL
INFO -------------------------------------------
INFO Total time: 1 second
INFO Finished at: Wed Oct 01 14:04:48 BRT 2008
INFO Final Memory: 3M/7M
INFO -------------------------------------------







Feito isto, vamos importar nossos 3 projetos para o eclipse:

File -- Import -- Existing Projects into Workspace -- Next -- Select root directory C:\maven\tst\soujava -- Finish.

Repita o processo até ter os 3 projetos no ambiente do eclipse.

Edite o arquivo pom.xml do projeto soujava de modo que ele fique assim:

<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">
 <parent>
  <groupId>br.org.soujava</groupId>
  <artifactId>projeto-soujava</artifactId>
  <version>1.0-SNAPSHOT</version>
  <relativePath>projeto-pom.xml</relativePath>
 </parent>
 <modelVersion>4.0.0</modelVersion>
 <groupId>br.org.soujava</groupId>
 <artifactId>soujava</artifactId>
 <packaging>war</packaging>
 <version>1.0-SNAPSHOT</version>
 <name>soujava</name>
 <url>http://maven.apache.org</url>
 <developers>
  <developer>
   <id>thomasmodeneis</id>
   <name>Thomas Rafael Modeneis</name>
   <email>thomas.modeneis@soujava.org.br</email>
   <organization>Sou Java</organization>
   <organizationUrl>http://www.soujava.org.br/</organizationUrl>
  </developer>
 </developers>
 <dependencies>
  <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>3.8.1</version>
   <scope>test</scope>
  </dependency>
  <dependency>
   <groupId>br.org.soujava</groupId>
   <artifactId>soujava_comuns</artifactId>
   <version>1.0-SNAPSHOT</version>
  </dependency>
  <dependency>
   <groupId>br.org.soujava</groupId>
   <artifactId>soujava_modelo</artifactId>
   <version>1.0-SNAPSHOT</version>
  </dependency>
 </dependencies>
 <build>
  <finalName>soujava</finalName>
  <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
     <webappDirectory>
      C:\servers\tomcat\webapps\soujava
     </webappDirectory>
    </configuration>
    <version>2.1-alpha-2</version>
    <goals>
     <goal>exploded</goal>
    </goals>
   </plugin>
  </plugins>
 </build>
</project>

Agora abra o projeto soujava e crie um novo arquivo: (New -- File -- projeto-pom.xml -- Finish) e edite:

<?xml version="1.0" encoding="ISO-8859-1"?>
<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>br.org.soujava</groupId>
 <artifactId>projeto-soujava</artifactId>
 <version>1.0-SNAPSHOT</version>
 <name>soujava_parent</name>
 <packaging>pom</packaging>
 <inceptionYear>2008</inceptionYear>
 <organization>
  <name>Sou Java</name>
  <url>http://www.soujava.org.br/</url>
 </organization>
 <modules>
  <module>../soujava_comuns</module>
  <module>../soujava_modelo</module>
  <module>../soujava</module>
 </modules>
 <developers>
  <developer>
   <id>thomasmodeneis</id>
   <name>Thomas Rafael Modeneis</name>
   <email>thomas.modeneis@soujava.org.br</email>
   <organization>Sou Java</organization>
   <organizationUrl>http://www.soujava.org.br</organizationUrl>
  </developer>
 </developers>
 <dependencyManagement></dependencyManagement>
 <dependencies>
 </dependencies>
</project>







Feito isto execute o seguinte comando em uma janela do MS-DOS: 

C:\maven\tst\soujava>mvn -f projeto-pom.xml clean install package war:exploded
[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO]   soujava_comuns
[INFO]   soujava_modelo
[INFO]   soujava_parent
[INFO]   soujava
[INFO] Searching repository for plugin with prefix: 'war'.
[INFO] -------------------------------------------------------------------------
---
[INFO] Building soujava_comuns
[INFO]    task-segment: [clean, install, package, war:exploded]
[INFO] -------------------------------------------------------------------------
---
[INFO] [clean:clean]
[INFO] Deleting directory C:\maven\tst\soujava_comuns\target
[INFO] Deleting directory C:\maven\tst\soujava_comuns\target\classes
[INFO] Deleting directory C:\maven\tst\soujava_comuns\target\test-classes
[INFO] Deleting directory C:\maven\tst\soujava_comuns\target\site
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Compiling 1 source file to C:\maven\tst\soujava_comuns\target\classes
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] Compiling 1 source file to C:\maven\tst\soujava_comuns\target\test-classe
s
[INFO] [surefire:test]
[INFO] Surefire report directory: C:\maven\tst\soujava_comuns\target\surefire-re
ports
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running br.org.soujava.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.063 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] [jar:jar]
[INFO] Building jar: C:\maven\tst\soujava_comuns\target\soujava_comuns-1.0-SNAPS
HOT.jar
[INFO] [install:install]
[INFO] Installing C:\maven\tst\soujava_comuns\target\soujava_comuns-1.0-SNAPSHOT.jar
to C:\repositorio\br\org\soujava\soujava_comuns\1.0-SNAPSHOT\soujava_comuns-1.0-SNAPSHOT.jar
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [surefire:test]
[INFO] Surefire report directory: C:\maven\tst\soujava_comuns\target\surefire-reports
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running br.org.soujava.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.062 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] [jar:jar]
[INFO] Building jar: C:\maven\tst\soujava_comuns\target\soujava_comuns-1.0-SNAPSHOT.jar
[INFO] [war:exploded]
[INFO] Exploding webapp
[INFO] Assembling webapp[soujava_comuns] in [C:\maven\tst\soujava_comuns\target\soujava_comuns-1.0-SNAPSHOT]
[INFO] Processing war project
[INFO] Webapp assembled in[157 msecs]
[INFO] -------------------------------------------------------------------------
---
[INFO] Building soujava_modelo
[INFO]    task-segment: [clean, install, package, war:exploded]
[INFO] -------------------------------------------------------------------------
---
[INFO] [clean:clean]
[INFO] Deleting directory C:\maven\tst\soujava_modelo\target
[INFO] Deleting directory C:\maven\tst\soujava_modelo\target\classes
[INFO] Deleting directory C:\maven\tst\soujava_modelo\target\test-classes
[INFO] Deleting directory C:\maven\tst\soujava_modelo\target\site
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Compiling 1 source file to C:\maven\tst\soujava_modelo\target\classes
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] Compiling 1 source file to C:\maven\tst\soujava_modelo\target\test-classe
s
[INFO] [surefire:test]
[INFO] Surefire report directory: C:\maven\tst\soujava_modelo\target\surefire-reports
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running br.org.soujava.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.062 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] [jar:jar]
[INFO] Building jar: C:\maven\tst\soujava_modelo\target\soujava_modelo-1.0-SNAPSHOT.jar
[INFO] [install:install]
[INFO] Installing C:\maven\tst\soujava_modelo\target\soujava_modelo-1.0-SNAPSHOT.jar
to C:\repositorio\br\org\soujava\soujava_modelo\1.0-SNAPSHOT\soujava_modelo-1.0-SNAPSHOT.jar
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [surefire:test]
[INFO] Surefire report directory: C:\maven\tst\soujava_modelo\target\surefire-reports
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running br.org.soujava.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.047 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] [jar:jar]
[INFO] Building jar: C:\maven\tst\soujava_modelo\target\soujava_modelo-1.0-SNAPSHOT.jar
[INFO] [war:exploded]
[INFO] Exploding webapp
[INFO] Assembling webapp[soujava_modelo] in [C:\maven\tst\soujava_modelo\target\soujava_modelo-1.0-SNAPSHOT]
[INFO] Processing war project
[INFO] Webapp assembled in[63 msecs]
[INFO] -------------------------------------------------------------------------
---
[INFO] Building soujava_parent
[INFO]    task-segment: [clean, install, package, war:exploded]
[INFO] -------------------------------------------------------------------------
---
[INFO] [clean:clean]
[INFO] Deleting directory C:\maven\tst\soujava\target
[INFO] Deleting directory C:\maven\tst\soujava\target\classes
[INFO] Deleting directory C:\maven\tst\soujava\target\test-classes
[INFO] Deleting directory C:\maven\tst\soujava\target\site
[INFO] [site:attach-descriptor]
[INFO] [install:install]
[INFO] Installing C:\maven\tst\soujava\projeto-pom.xml
to C:\repositorio\br\org\soujava\projeto-soujava\1.0-SNAPSHOT\projeto-soujava-1.0-S
NAPSHOT.pom
[INFO] [site:attach-descriptor]
[INFO] [war:exploded]
[INFO] Exploding webapp
[INFO] Assembling webapp[projeto-soujava] in [C:\maven\tst\soujava\target\projeto-soujava-1.0-SNAPSHOT]
[INFO] Processing war project
[INFO] Webapp assembled in[31 msecs]
[INFO] -------------------------------------------------------------------------
---
[INFO] Building soujava
[INFO]    task-segment: [clean, install, package, war:exploded]
[INFO] -------------------------------------------------------------------------
---
[ERROR] Plugin contains a <goals/> section: this is IGNORED - please use <execut
ions/> instead.
[INFO] [clean:clean]
[INFO] Deleting directory C:\maven\tst\soujava\target
[INFO] Deleting directory C:\maven\tst\soujava\target\classes
[INFO] Deleting directory C:\maven\tst\soujava\target\test-classes
[INFO] Deleting directory C:\maven\tst\soujava\target\site
[ERROR] Plugin contains a <goals/> section: this is IGNORED - please use <executions/> instead.
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] No sources to compile
[INFO] [surefire:test]
[INFO] No tests to run.
[INFO] [war:war]
[INFO] Packaging webapp
[INFO] Assembling webapp[soujava] in [C:\servers\tomcat\webapps\soujava]
[INFO] Processing war project
[INFO] Webapp assembled in[63 msecs]
[INFO] Building war: C:\maven\tst\soujava\target\soujava.war
[INFO] [install:install]
[INFO] Installing C:\maven\tst\soujava\target\soujava.war
to C:\repositorio\br\org\soujava\soujava\1.0-SNAPSHOT\soujava-1.0-SNAPSHOT.war
[ERROR] Plugin contains a <goals/> section: this is IGNORED - please use <executions/> instead.
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] No sources to compile
[INFO] [surefire:test]
[INFO] No tests to run.
[INFO] [war:war]
[INFO] Packaging webapp
[INFO] Assembling webapp[soujava] in [C:\servers\tomcat\webapps\soujava]
[INFO] Processing war project
[INFO] Webapp assembled in[16 msecs]
[INFO] Building war: C:\maven\tst\soujava\target\soujava.war
[INFO] [war:exploded]
[INFO] Exploding webapp
[INFO] Assembling webapp[soujava] in [C:\servers\tomcat\webapps\soujava]
[INFO] Processing war project
[INFO] Webapp assembled in[15 msecs]
[INFO]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] ------------------------------------------------------------------------
[INFO] soujava_comuns ........................................ SUCCESS [14.610s]
[INFO] soujava_modelo ........................................ SUCCESS [2.500s]
[INFO] soujava_parent ........................................ SUCCESS [2.062s]
[INFO] soujava ............................................... SUCCESS [0.453s]
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 20 seconds
[INFO] Finished at: Wed Oct 01 15:38:55 BRT 2008
[INFO] Final Memory: 10M/19M
[INFO] ------------------------------------------------------------------------

Inicie seu Tomcat e verifique a estrutura de pacotes do seu projeto no tomcat, ela deve estar assim:

+soujava|
        |+META-INF
        |
        |+WEB-INF|
                 |-web.xml
                 |
                 |+classes-
                 |
                 |+lib-|
                       |
                       |+soujava_comuns-1.0-SNAPSHOT.jar
                       |
                       |+soujava_modelo-1.0-SNAPSHOT.jar

Como você pode ver, nossos dois projetos (soujava_comuns e soujava_modelo) foram inseridos dentro da lib do nosso projeto pai (soujava). 

Bom é isso ai pessoal, agora vocês já sabem como criar projetos com o maven e com um simples comando instalar todos eles no seu repositório local e realizar o deploy no seu servidor de aplicações (tomcat).

Os 3 projetos completos estão disponíveis para download:

http://www.soujava.org.br/download/attachments/6422631/soujava.zip

Agradecimentos:

Todos que leram até aqui, e espero tenha sido útil.

Autor:

Thomas Rafael Modeneis - Sun Certified Programmer for Java Platform, SE 5.0 - 310-055. at Elosoft S.A. thomas.modeneis@gmail.com

Equipe Sou Java, Fortalecendo a comunidade de usuários de Java do Brasil.

Adaptavist Theme Builder (3.1.4) Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5.4 Build:#809 Jun 12, 2007)
Free theme builder license