-
Notifications
You must be signed in to change notification settings - Fork 0
/
apache maven denpendência repositorio.txt
238 lines (200 loc) · 9.71 KB
/
apache maven denpendência repositorio.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
<p>Autor: Carlos Nantes</p>
<p>Data: 11/10/2015</p>
<p>Fonte:
<ul>
<li><a href="https://www.youtube.com/watch?v=oLlOv8Ln0VE&list=PLyM7S4CZk8WPrtC8AclCNxOBA8buEJdib&index=4">https://www.youtube.com/watch?v=oLlOv8Ln0VE&list=PLyM7S4CZk8WPrtC8AclCNxOBA8buEJdib&index=4</a></li>
<li><a href="http://web.cecs.pdx.edu/~whitlock/pdf/maven-2x2.pdf">http://web.cecs.pdx.edu/~whitlock/pdf/maven-2x2.pdf</a></li>
<li><a href="http://maven.apache.org">http://maven.apache.org</a></li>
</ul>
</p>
<p>Objetivos:</p>
<ul>
<li>Foi criado para promover um ambiente de desenvolvimento padrão que pode ser usado por muitos projetos.</li>
<li>Cada projeto produz alguns artefatos (arquivos jar, aplicações web, etc) do código fonte.</li>
<li>Testes unitários são complemente integrados no projeto.</li>
<li>Bibliotecas de terceiros são baixadas automaticamente e o inseridas no classpath. Não é mais necessário configurar classpath.</li>
<li>Artefatos e informação de suporte podem ser publicadas a um repositório centralizado para consumo por outros.</li>
<li>Gerencia e faz downloads de dependências.</li>
<li>Compila código, executa testes, constrói os artefatos do projeto.</li>
<li>Executa relatórios, publica artefatos e web site.</li>
<li>Não é mais necessário fazer download manual de bibliotecas e ferramentas.</li>
</ul>
<h3>Termos:</h3>
<hr>
archetype: arquétipo ou template.
groudId: organização que vai desenvolver o código (br.gov.pr.maringa) e o id de login do desenvolvedor (carlosnantes). Ex: br.gov.pr.maringa.carlosnantes
artifactId: nome do projeto.
<h3>Layout de um projeto Maven:</h3>
<hr>
<pre>
Projeto
pom.xml
src/
main/
java/ (diretório base para código fonte)
br/gov/pr/maringa/carlosnantes/
resources/ (arquivos no classpath)
META-INF/MANIFEST.MF
test/
java/ (diretório base para código de teste)
br/gov/pr/maringa/carlosnantes/
resources/ (arquivos no classpath de teste)
site/ (arquivos para o web site)
site.xml (descreve o site)
apt/ (arquivos suplementares para o site)
resources/
css/
site.css
images/
target/
projeto-1.0.jar (Artefato do projeto)
surefire-reports/ (Output do unit test)
site/ (Web site gerado)
</pre>
Comandos:
=========
mvn compile - compila o código java em src/main/java
mvn test - recompila o código fonte necessário e executa os unit tests.
mvn package - após executar os unit tests, constrói um arquivo jar com o código fonte compilado.
mvn site - gera um web site para o projeto com a informação obtida do pom.xml
mvn clean - deleta todos os artefados construídos.
mvn eclipse:eclipse - gera um projeto do eclipse baseado em um projeto maven.
mvn idea:idea - gera um projeto do inteliJ Idea baseado em um projeto maven.
Artefatos construídos são colocados no diretório target/.
pom.xml (Project Object Model):
==============================
<pre>
<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>edu.pdx.cs410J.whitlock</groupId>
<artifactId>proj1</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>proj1</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>
</pre>
modelVersion: versão do pom. 4.0.0.
groupId: nome da organização e o desenvolvedor.
artifactId: nome do artefato gerado pelo projeto.
packaging: tipo de empacotamento.
version: 1.0-SNAPSHOT. -SNAPSHOT indica que o arquivo ainda não foi liberado.
name: por padrão é o mesmo que o artifactId.
url: url para o site do seu projeto.
dependencies: quais dependências seu projeto precisa para rodar. Listar as bibliotecas de terceiros que você utiliza no projeto.
scope: informa o escopo onde a dependência será usada. Scope test informa que a biblioteca será usada apenas para testes e não será empacotada como no jar.
Obs: maven usa versão do junit antiga. Lembre-se de alterá-la para a mais nova.
Escopos das dependências:
========================
O escopo determina em qual fase a dependência é utilizada.
- compile (padrão): bibliotecas e todas as suas dependências estão disponíveis a todas as fases de build.
- runtime: não é necessária para compilação, apenas necessária para execução de tests e execução do projeto.
- provided: apenas necessária em tempo de compilação, alguém irá prover a bilioteca em tempo de execução.
- test: apenas necessária para compilar e executar testes.
- system: biblioteca não está disponível no repositório. O local é fornecido pelo elemento systemPath do POM. Usado para bibliotecas que não podem ser publicadas no repositório do mavem. Você pode baixá-la manualmente utilizá-la do seu sistema.
Repositórios:
=============
- Maven faz download das dependências para um repositório local em ${user.home}/.m2/repository/
- Ao resolver as dependências, Maven procurará primeiro no repositório local antes de procurar nos outros repositórios.
- Rodar mvn com -o ou --offline irá prevenir que maven acesse repositórios remotos.
- O layout do repositório é baseado no group id, versão e id do artefato. Ex: o artefato JUnit 3.8.1 será baixado para .m2/junit/junit/3.8.1/junit-3.8.1.jar
- O repositório contém uma cópia do pom para que as dependências sejam resolvidas.
- Por padrão maven procura artefatos no repositório publico http://repo1.maven.org/maven2/
- Um POM pode especificar outros repositórios para procura:
<pre>
<repositories>
<repository>
<id>CS410J</id>
<name>CS410J Maven Repository</name>
<url>http://web.cecs.pdx.edu/~whitlock/repository</url>
</repository>
</repositories>
</pre>
Fases de build do Maven:
========================
Cada fase depende da fase anterior.
validate: valida pom.xml e faz download das dependências necessárias.
compile: compila o código fonte.
test: testa o código (não pode solicitar que o código seja empacotado).
package: constrói o artefato do projeto (arquivo jar ou war).
integration-test: Dá deploy (implanta) o artefato a um servidor web para test de integração.
verify: certifica que o artefato atende aos critérios de qualidade.
install: copia o artefato para o repositório maven para uso em outros projetos locais.
deploy: publica artefatos a repositórios remotos do Maven para ser usado por outros.
Ao executar mvn package será invocado validate, compile e test.
Build Goals:
============
Cada goal é uma linha de comando que corresponde a uma fase do maven.
- mvn install:install-file -Dfile=/local/projeto.jar -DgroupId=br.pr.gov.maringa.carlosnantes -DartifactId=projeto -Dversion=3.2.1 -Dpackaging=jar - usado para instalar artefatos de terceiros que não estão no repositório online do maven.
- mvn surefire:test - goal que executa fase de test do maven. Executa junit.
- mvn deploy:
- Arquivos podem ser subidos via FTP, SCP.
- O site pode ser subido para um servidor web público.
<pre>
<distributionManagement>
<repository>
<id>whitlock-PSU</id>
<name>David Whitlock's PSU repository</name>
<url>scp://cs.pdx.edu/u/whitlock/public_html/repository</url>
</repository>
<site>
<id>whitlock-PSU</id>
<name>David Whitlock's PSU repository</name>
<url>scp://cs.pdx.edu/u/whitlock/public_html/site</url>
</site>
</distributionManagement>
</pre>
${user.home}/.m2/settings.xml contém nome de usuário e senha ou senha privada usados para autenticação no servidor.
É recomendável que as organizações tenham seu próprio repositório maven:
- Um local para dar deploy nos projetos.
- Desenvolvedores podem dar build mesmo se não houver conexão com a internet.
- Podem verificar que os artefatos vem de uma fonte confiável.
- É fácil fazê-lo (HTTP e scp)
- deploy:deploy-file irá fazer o upload do artefato para um repositório remoto.
- mvn deploy:deploy-file \
-Durl=scp://cs.pdx.edu/u/whilock/repository
-DrepositoryId=whitlock-PSU \
-Dfile=/home/dave/watij.jar
-DgroupId=com.watij \
-DartifactId=watij \
-Dversion=3.2.1
-Dpackaging=jar
Maven gera o arquivo POM para o artefato no servidor. -DpomFile especifica um pom.xml para uma biblioteca de terceiro que contém suas dependências.
Plugins:
========
Relatórios:
===========
mvn javadoc:javadoc - gera documentação da API.
mvn findbugs:findbugs - irá encontrar erros no seu programa a partir de uma base de dados contendo os erros comuns em java.
Geração do site:
===============
mvn site irá gerar:
- Informação sobre o POM
- Relatórios do projeto (Docs da API, resultados de testes, análise de código, etc.)
- Outras páginas que você especificas. Estas páginas são editadas na linguagem de marcação APT (Almost Plain Text)
Configuração versão do Java a usar no maven:
===========================================
Abra o pom.xml e inlua as linhas abaixo da tag dependencies:
<pre>
<build>
<plugins>
<plugin>
<artifactId>mave-compiler-plugin</artifactId> // obtenha essa linha da aba Effective POM no eclipse.
<version>2.3.1</version> // obtenha essa linha da aba Effective POM no eclipse.
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
<plugin>
</plugins>
</build>
</pre>