Professional Documents
Culture Documents
1 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
www.devmedia.com.br
[verso para impresso]
Link original: http://www.devmedia.com.br/articles
/viewcomp.asp?comp=25128
31/07/2016 09:38
2 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38
3 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
tempo atrs, cada projeto tinha sua prpria estrutura, seu prprio jeito
de gerar pacotes, de efetuar cada um destes passos. Projetos
complexos, com vrios mdulos, ainda podem precisar que estes sejam
facilitar o seu trabalho. Mais uma vez, o ciclo de aviso e cpia do novo
31/07/2016 09:38
4 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38
5 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
ferramenta assume que o seu usurio far as coisas da forma como ela
preconiza como ideais (estrutura de diretrios padro, por exemplo), e
o livra de ter que declarar algo que se repetir em todo projeto. Ao
incorporar as prticas aceitas pela comunidade Java como as mais
indicadas para projetos Java EE, o Maven acaba no s
31/07/2016 09:38
6 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
arquivo zip. O artigo adotar como base a verso estvel mais recente
durante a sua escrita, a 3.0.4.
recomenda-se que o nome deste diretrio fique no formato maven[verso]. Utilizando a nossa verso como exemplo, o nome que
31/07/2016 09:38
7 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38
8 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
podem ser usados como base para projetos. Muitas vezes, criar um
31/07/2016 09:38
9 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
para escolha do usurio. Neste artigo, optamos por utilizar como base
para nossa demonstrao o diretrio D:\projetos, e sugerimos que o
[INFO] -----------------------------------------------------------------------[INFO]
[INFO] --- maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom -[INFO] Generating project in Interactive mode
31/07/2016 09:38
10 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
Choose archetype:
Caso esta seja a primeira vez em que este comando esteja sendo
que o usurio invocar uma funo do Maven pela primeira vez, porque a
31/07/2016 09:38
11 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
Choose a number: 6:
1.0-SNAPSHOT: :
br.com.sosimple: : br.com.sosimple.javaMag
groupId: br.com.sosimple
artifactId: javaMagazine
version: 1.0-SNAPSHOT
package: br.com.sosimple.javaMagazine
Y: : y
[INFO] -------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype:
31/07/2016 09:38
12 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
[INFO] ------------------------------------------------------------------------
31/07/2016 09:38
13 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
onde todo cdigo-fonte deve ser mantido. Dentro de src, main e test
31/07/2016 09:38
14 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38
15 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
ue esteja dentro de target, pois este diretrio tem seu contedo rot
31/07/2016 09:38
16 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38
17 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
xmlns:xsi="http://www.w3.org
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.sosimple</groupId>
<artifactId>javaMagazine</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>javaMagazine</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
31/07/2016 09:38
18 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
<scope>test</scope>
</dependency>
</dependencies>
</project>
(http://hc.apache.org/httpcomponents-client-ga/index.html) para se
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
31/07/2016 09:38
19 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.1.3</version>
</dependency>
</dependencies>
(...)
mvn eclipse:eclipse para gerar um projeto para a IDE Eclipse (para criar
os exemplos, baixamos a verso Eclipse IDE for Java EE Developers em
http://www.eclipse.org/downloads/).
31/07/2016 09:38
20 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38
21 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38
22 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
faremos agora. Para isso, clique com o boto direito no nome do projeto
e acesse Build Path > Configure Build Path. A Figura 10 ilustra o
procedimento.
31/07/2016 09:38
23 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38
24 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38
25 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38
26 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38
27 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
/**
*/
31/07/2016 09:38
28 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
* Mtodo que se conecta ao site da CEF para obter as dezenas do ltimo sort
* @return array de Strings, onde cada elemento uma dezena sorteada.
*/
} catch (Exception e) {
} finally {
httpclient.getConnectionManager().shutdown();
/**
31/07/2016 09:38
29 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
}
}
31/07/2016 09:38
30 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
package br.com.sosimple.javaMagazine.servicos;
import junit.framework.TestCase;
import br.com.sosimple.javaMagazine.servicos.ResultadoMegasena;
/**
31/07/2016 09:38
31 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
}
}
Outra forma que podemos utilizar para testar nosso projeto, mas desta
vez manualmente, rodando a classe App, e o retorno desta execuo
aparecer no console do Eclipse. Caso ocorra algum problema na
31/07/2016 09:38
32 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38
33 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
verstil e flexvel. Ele agrega valor aos projetos onde empregado, por
causa de sua maturidade, filosofia organizacional, praticidade e, graas
aos vrios plugins existentes, de suas inmeras funcionalidades, que
esto sempre sendo expandidas.
http://maven.apache.org/
Site oficial do Java.
www.oracle.com/us/technologies/java/
Parte II
31/07/2016 09:38
34 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38
35 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38
36 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
qualquer conveno destas pode ser sobrescrita pelo usurio, que ento
dever informar como quer que a ferramenta se comporte para seu
projeto, prtica somente aconselhada para casos de exceo, como
projetos legados.
31/07/2016 09:38
37 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
[INFO] -----------------------------------------------------------------------[INFO]
------------------------------------------------------Running br.com.sosimple.javaMagazine.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.009 sec (4)
Running br.com.sosimple.javaMagazine.servicos.ResultadoMegasenaTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.317 sec (4)
Results :
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
[INFO]
31/07/2016 09:38
38 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
[INFO]
[INFO] ------------------------------------------------------------------------
caso costuma ocorrer com pacotes web (WAR) que esto instalados em
servidores web ativos;
31/07/2016 09:38
39 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</reporting>
</project>
comando mvn clean site, o diretrio site ser criado dentro de target e
nele haver um arquivo chamado index.html. Ao abrimo-lo em um
31/07/2016 09:38
40 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
dependncias do projeto.
Outra funcionalidade til do Maven a gerao simplificada do Javadoc
do projeto. Para tanto, basta incluir o plugin do Javadoc na seo
<reporting>
<plugins>
(...)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.7</version>
</plugin>
(...)
</plugins>
</reporting>
(...)
Para acionar o plugin, basta usar o comando mvn clean javadoc:jar, que
cria a documentao empacotada sob a forma de um JAR, de nome
31/07/2016 09:38
41 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
com o JDK 1.5, enquanto o PMD analisa o cdigo com base no JDK 1.4.
Por causa disso, teremos que garantir que tanto o compilador do Maven
quanto o PMD utilizem a mesma verso de JDK nas suas execues.
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<compileSource>1.6</compileSource>
</properties>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>${compileSource}</source>
<target>${compileSource}</target>
</configuration>
</plugin>
</plugins>
</build>
31/07/2016 09:38
42 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>2.7.1</version>
<configuration>
<targetJdk>${compileSource}</targetJdk>
</configuration>
</plugin>
(...)
</plugins>
</reporting>
31/07/2016 09:38
43 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
<plugins>
(...)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.6</version>
</plugin>
(...)
</plugins>
</reporting>
endereos: http://maven.apache.org/plugins/maven-pmd-plugin/ e
http://maven.apache.org/plugins/maven-checkstyle-plugin/.
Por fim, vale a pena ressaltar que o Maven tambm pode gerar todas
31/07/2016 09:38
44 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
-DarchetypeArtifactId=maven-archetype-webapp
-DartifactId=javaMagazineWeb -DgroupId=br.com.sosimple
-Dversion=1.0-SNAPSHOT
31/07/2016 09:38
45 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.sosimple</groupId>
<artifactId>javaMagazineWeb</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<compileSource>1.6</compileSource>
</properties>
<build>
<plugins>
31/07/2016 09:38
46 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>${compileSource}</source>
<target>${compileSource}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>br.com.sosimple</groupId>
<artifactId>javaMagazine</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
31/07/2016 09:38
47 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
31/07/2016 09:38
48 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38
49 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38
50 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.sosimple.javaMagazine.servicos.ResultadoMegasena;
public class ResultadoMegasenaServlet extends HttpServlet {
private static final long serialVersionUID = -2387491444867572667L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
PrintWriter out = response.getWriter();
out.flush();
}
out.close();
URL que a invocar, para que o servidor web saiba para onde direcionar
requisies que apontem para a servlet. O contedo do arquivo
31/07/2016 09:38
51 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
<web-app>
<servlet-name>megasena</servlet-name>
<servlet-class>br.com.sosimple.javaMagazineWeb.servlets.ResultadosMegasen
</servlet>
<servlet-mapping>
<servlet-name>megasena</servlet-name>
<url-pattern>/megasena</url-pattern>
</servlet-mapping>
</web-app>
31/07/2016 09:38
52 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
entrada para a verso que utilizamos, 4.1.3, que a mais recente com
status de release da listagem. Clicando em cima do nmero da verso,
temos acesso a vrias informaes da dependncia, como link para
31/07/2016 09:38
53 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
\target\javaMagazine-1.0-SNAPSHOT.jar -DgroupId=br.com.sosimple
31/07/2016 09:38
54 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
http://maven.apache.org/
Site oficial do Java.
www.oracle.com/us/technologies/java/
Site com plugin do Maven para o Eclipse.
http://maven.apache.org/eclipse-plugin.html
http://www.jetbrains.com/idea/features/ant_maven.htm
31/07/2016 09:38
55 de 55
http://www.devmedia.com.br/articles/viewcomp_forprint.asp?comp=25128
31/07/2016 09:38