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:
xmlns:xsi="http:
xsi:schemaLocation="http:>
<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: <developers>
<developer>
<id>thomasmodeneis</id>
<name>Thomas Rafael Modeneis</name>
<email>thomas.modeneis@soujava.org.br</email>
<organization>Sou Java</organization>
<organizationUrl>http: </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:
xmlns:xsi="http:
xsi:schemaLocation="http:>
<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: </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: </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.