Title: Desenvolvimento de Software / Maven
Tags: Desenvolvimento_de_Software Resumo
On every note of this deck, unless a note says otherwise:
tldr: - Apache Maven é uma ferramenta de automação de build para projetos Java, com abordagem declarativa (configuração descreve o projeto).
- Build = processo de compilar + testar + empacotar o código e dependências em um artefato executável (ex.: JAR/WAR).
- Suporta testes via integração com JUnit/TestNG e fases do ciclo de vida como:
- test (testes unitários)
- integration-test (testes de integração)
- O coração do Maven é o POM (pom.xml), um XML que define:
- metadados do projeto (groupId, artifactId, version, packaging)
- dependências, plugins, repositórios, propriedades, profiles
- herança via POM pai e módulos (filhos herdam configurações; pai lista módulos em <modules>)
- Dependências no Maven:
- diretas (declaradas em <dependencies>)
- transitivas (dependências das dependências, resolvidas automaticamente)
- escopos definem quando a dependência é usada (compile/test/runtime etc.)
- Maven é baseado em ciclo de vida (fases ordenadas); cada fase executa goals de plugins (tarefas específicas).
- Ex.: mvn clean dependency:copy-dependencies package
- Criação/empacotamento do build ocorre via:
- <packaging> (ex.: jar, war, com lifecycle associado)
- plugins configurados no POM (ex.: plugin compiler com goals compile/testCompile)
- Três ciclos de vida principais (independentes):
- Clean: limpa target (pre-clean, clean, post-clean)
- Default: valida → compila → testa → empacota → instala → deploy (inclui package, install, deploy)
- Site: gera e publica documentação (site, site-deploy)
- Propriedades/variáveis pré-definidas são referenciadas como ${...} (ex.: ${project.version}, ${project.artifactId}, ${user.home}), úteis para padronizar configurações como finalName.
link: https://documentacao.online/estudos/kvdh.html

front: (FAURGS/HCPA/2016) Sobre Maven, considere as afirmações abaixo.
I - Maven fornece uma abundância de informações úteis sobre o projeto, que são, em parte, retiradas do seu Project Object Model (POM) e, em parte, geradas a partir dos fontes do projeto. O Maven pode fornecer, por exemplo, log de alterações de documentos.
II - Maven visa tornar o processo de build mais fácil e prover um sistema de build uniforme, adotando o Project Object Model (POM) e um conjunto de plugins.
III - Apesar de ser muito útil para suporte a builds, Maven não provê apoio à especificação e à execução de testes de unidade como parte normal de um ciclo de build.
Quais estão corretas?
a) Apenas II.
b) Apenas I e II.
c) Apenas I e III.
d) Apenas II e III.
e) I, II e III.
response: Alternativa B
comment: Vamos analisar cada afirmativa. I. Certo. O POM será nosso próximo assunto, mas está correto o apontamento. II. Certo. Novamente, veremos o POM logo em seguida, mas, de fato, o Maven busca deixar o processo de build uniforme e mais facilitado. III. Errado. Como vimos, o Maven prevê diversas ferramentas de integração com frameworks de testes. Portanto, corretos os itens I e II. (Gabarito: Letra B)
title: Maven
Other fields (not shown on cards):
back: Alternativa B - Vamos analisar cada afirmativa. I. Certo. O POM será nosso próximo assunto, mas está correto o apontamento. II. Certo. Novamente, veremos o POM logo em seguida, mas, de fato, o Maven busca deixar o processo de build uniforme e mais facilitado. III. Errado. Como vimos, o Maven prevê diversas ferramentas de integração com frameworks de testes. Portanto, corretos os itens I e II. (Gabarito: Letra B)

front: (IBFC/TJ PE/2017) POM (Project Object Model ) é a peça fundamental de um projeto do Apache Maven. Para tanto, o Maven utiliza para descrever o projeto de software sendo construído um arquivo:
a) CSS
b) Java
c) C++
d) HTML
e) XML
response: Alternativa E
comment: O POM é construído usado a linguagem XML. (Gabarito: Letra E)
title: Maven
Other fields (not shown on cards):
back: Alternativa E - O POM é construído usado a linguagem XML. (Gabarito: Letra E)

front: (CEBRASPE/STJ/2018) Julgue o item seguinte, a respeito de Maven, desenvolvimento web, servidor web, servidor de aplicação e criptografia. No Maven, para implementar a herança de projetos, é necessário que os diretórios dos POMs filhos sejam especificados no POM pai.
response: Certo
comment: Como acabamos de ver, esse é, de fato, um requisito obrigatório. (Gabarito: Certo)
title: Maven
Other fields (not shown on cards):
back: Certo - Como acabamos de ver, esse é, de fato, um requisito obrigatório. (Gabarito: Certo)

front: (CEBRASPE/TCE SC/2016) Com relação à programação segura e à ferramenta Apache Maven, julgue o item seguinte. Quando a segurança e a implantação do Apache Maven são configuradas, os repositórios são definidos em um projeto na seção , na qual devem-se inserir um nome de usuário e uma senha.
response: Errado
comment: De fato, definimos os repositórios do projeto na seção distributionManagement, além da localização do site e a documentação. Porém, é vedada a inserção de nomes de usuário e senhas nelas. (Gabarito: Errado)
title: Maven
Other fields (not shown on cards):
back: Errado - De fato, definimos os repositórios do projeto na seção distributionManagement, além da localização do site e a documentação. Porém, é vedada a inserção de nomes de usuário e senhas nelas. (Gabarito: Errado)

front: (CEBRASPE/TCE-RO/2019) Sendo o Maven uma ferramenta utilizada para projetos Java, assinale a opção que apresenta a característica correta do ciclo de vida referente ao estágio do Maven.
a) test: executa os testes unitários desde que os códigos estejam empacotados ou implantados no repositório central.
b) verify: verifica e instala os pacotes a partir do repositório central.
c) validate: valida o pacote JAR compilado, comparando-o com a compilação anterior do projeto.
d) process-resources: copia e testa o código-fonte no diretório de destino.
e) package: empacota o código compilado em seu formato distribuível, como um JAR.
response: Alternativa E
comment: Vamos analisar cada alternativa. a) Errado. O test é executado antes do empacotamento. b) Errado. O verify verifica se os pacotes estão prontos para serem implementados c) Errado. O validate irá validar o projeto, mas isso acontece antes de empacotar d) Errado. O process-resources é responsável por copiar e processar os recursos no diretório de destino e) Certo. O package é, de fato, o processo de empacotamento. Portanto, correta a letra E. (Gabarito: Letra E)
title: Maven
Other fields (not shown on cards):
back: Alternativa E - Vamos analisar cada alternativa. a) Errado. O test é executado antes do empacotamento. b) Errado. O verify verifica se os pacotes estão prontos para serem implementados c) Errado. O validate irá validar o projeto, mas isso acontece antes de empacotar d) Errado. O process-resources é responsável por copiar e processar os recursos no diretório de destino e) Certo. O package é, de fato, o processo de empacotamento. Portanto, correta a letra E. (Gabarito: Letra E)

front: (CESGRANRIO/IPEA/2024) No âmbito do Maven, um objetivo de plug-in representa uma tarefa específica que contribui para a construção e para o gerenciamento de um projeto. Um objetivo pode estar vinculado a zero ou mais fases do ciclo de vida de construção. A qual fase de um ciclo de vida padrão de construção está vinculado o plug-in ear cujo objetivo é generate-application-xml?
a) test
b) compile
c) prepare-package
d) process-sources
e) generate-resources
response: Letra C
comment: O objetivo generate-application-xml é responsável por gerar o arquivo application.xml, um descritor necessário para empacotamento do EAR. Esse arquivo deve ser gerado antes de o pacote ser construído, e a fase prepare-package é justamente a fase onde são realizadas tarefas preparatórias para o empacotamento final, como a geração de metadados ou configuração de arquivos necessários. Portanto, a fase correta à qual esse objetivo está vinculado é prepare- package.
title: Maven
Other fields (not shown on cards):
back: Letra C - O objetivo generate-application-xml é responsável por gerar o arquivo application.xml, um descritor necessário para empacotamento do EAR. Esse arquivo deve ser gerado antes de o pacote ser construído, e a fase prepare-package é justamente a fase onde são realizadas tarefas preparatórias para o empacotamento final, como a geração de metadados ou configuração de arquivos necessários. Portanto, a fase correta à qual esse objetivo está vinculado é prepare- package.

front: (FCC/TJ CE/2022) Em uma aplicação que utiliza Spring Boot e conecta a um banco de dados PostgreSQL, um Analista realizou as configurações abaixo.
org.springframework.boot
spring-boot-starter-data-jpa
org.postgresql
postgresql
Tais configurações foram inseridas corretamente no arquivo
a) manifest.xml.
b) web.xml.
c) pom.xml.
d) server.xml.
e) data.xml.
response: Letra C
comment: As configurações mencionadas foram inseridas corretamente no arquivo pom.xml. O arquivo pom.xml (Project Object Model) é o arquivo de configuração utilizado pelo Maven para gerenciar dependências e configurações de um projeto Java. É nele que especificamos as bibliotecas (dependencies) que o projeto utilizará, incluindo frameworks e drivers de banco de dados. No caso da aplicação que utiliza Spring Boot e conecta-se ao PostgreSQL, as dependências especificadas são: • spring-boot-starter-data-jpa, que inclui o suporte ao JPA (Java Persistence API), essencial para interação com bancos de dados no contexto de aplicações Spring Boot; • postgresql, que é o driver JDBC para conectar a aplicação ao banco de dados PostgreSQL. Portanto, essas configurações são corretamente declaradas no pom.xml, pois este é o arquivo onde são gerenciadas as dependências em projetos que utilizam Maven.
title: Maven
Other fields (not shown on cards):
back: Letra C - As configurações mencionadas foram inseridas corretamente no arquivo pom.xml. O arquivo pom.xml (Project Object Model) é o arquivo de configuração utilizado pelo Maven para gerenciar dependências e configurações de um projeto Java. É nele que especificamos as bibliotecas (dependencies) que o projeto utilizará, incluindo frameworks e drivers de banco de dados. No caso da aplicação que utiliza Spring Boot e conecta-se ao PostgreSQL, as dependências especificadas são: • spring-boot-starter-data-jpa, que inclui o suporte ao JPA (Java Persistence API), essencial para interação com bancos de dados no contexto de aplicações Spring Boot; • postgresql, que é o driver JDBC para conectar a aplicação ao banco de dados PostgreSQL. Portanto, essas configurações são corretamente declaradas no pom.xml, pois este é o arquivo onde são gerenciadas as dependências em projetos que utilizam Maven.

front: (SELECON/AMAZUL/2022) Maven é uma ferramenta de automação de compilação utilizada primariamente em projetos:
a) JSON
b) PHP
c) Visual Basic
d) JAVA
response: Letra D
comment: Questão tranquila. Maven é usado em projetos Java.
title: Maven
Other fields (not shown on cards):
back: Letra D - Questão tranquila. Maven é usado em projetos Java.

front: (CEBRASPE/MPE CE/2020) Com relação a ferramentas de controle de versão, de automação de build e de integração contínua, julgue o item seguinte. O Apache Maven tem como objetivo principal simular dispositivos mobile para obtenção da experiência do usuário, o que auxilia o desenvolvimento de aplicativos móveis, especialmente para Android
response: Errado
comment: O item está bem incorreto. O Maven é responsável por fazer uma automação do build de aplicações – ele pode até simular dispositivos móveis, mas reduzir isso ao objetivo principal da ferramenta é bem errado.
title: Maven
Other fields (not shown on cards):
back: Errado - O item está bem incorreto. O Maven é responsável por fazer uma automação do build de aplicações – ele pode até simular dispositivos móveis, mas reduzir isso ao objetivo principal da ferramenta é bem errado.

front: (CEBRASPE/MPE PI/2018) A respeito do Maven e do SQL, julgue o próximo item. O Apache Maven Project consiste em uma solução que trabalha em conjunto com o desenvolvimento de software, gerenciando versões de códigos-fonte localmente, de modo similar ao Github, porém em ambiente restrito, como, por exemplo, em uma rede privada de uma organização.
response: Errado
comment: O Apache Maven é uma ferramenta de gerenciamento de projetos, focada em automação de construção (build automation), gerenciamento de dependências e controle de ciclo de vida do projeto, mas não é uma ferramenta para controle de versões de código-fonte. Ferramentas como o GitHub são plataformas de controle de versão, que trabalham com sistemas de versionamento distribuído, como o Git. O Maven, por outro lado, trabalha com o conceito de repositórios para gerenciar bibliotecas e dependências (por exemplo, repositórios locais ou remotos de artefatos Java), mas não é utilizado para gerenciar versões de código-fonte diretamente, como fazem Git, Subversion (SVN) ou outras ferramentas de controle de versão. O Maven é frequentemente utilizado em conjunto com ferramentas de controle de versão, como o Git, mas seu foco é o gerenciamento de construção (build) de projetos, resolvendo dependências, gerando pacotes (JAR, WAR, EAR), entre outros. Portanto, o Maven não faz o gerenciamento de versões de código-fonte localmente de forma similar ao GitHub. A descrição fornecida no item refere-se mais a ferramentas de controle de versão do que ao Maven.
title: Maven
Other fields (not shown on cards):
back: Errado - O Apache Maven é uma ferramenta de gerenciamento de projetos, focada em automação de construção (build automation), gerenciamento de dependências e controle de ciclo de vida do projeto, mas não é uma ferramenta para controle de versões de código-fonte. Ferramentas como o GitHub são plataformas de controle de versão, que trabalham com sistemas de versionamento distribuído, como o Git. O Maven, por outro lado, trabalha com o conceito de repositórios para gerenciar bibliotecas e dependências (por exemplo, repositórios locais ou remotos de artefatos Java), mas não é utilizado para gerenciar versões de código-fonte diretamente, como fazem Git, Subversion (SVN) ou outras ferramentas de controle de versão. O Maven é frequentemente utilizado em conjunto com ferramentas de controle de versão, como o Git, mas seu foco é o gerenciamento de construção (build) de projetos, resolvendo dependências, gerando pacotes (JAR, WAR, EAR), entre outros. Portanto, o Maven não faz o gerenciamento de versões de código-fonte localmente de forma similar ao GitHub. A descrição fornecida no item refere-se mais a ferramentas de controle de versão do que ao Maven.

front: (ProGPe UFSCAR/UFSCAR/2018) O processo de desenvolvimento de software exige, por parte da equipe envolvida, muita disciplina e organização. Independente de o software ser construído por uma ou mais pessoas, todas as tarefas que envolvem o processo de desenvolvimento necessitam de coordenação, para que ao final, tenha-se o produto e sua construção transcorrida de maneira correta. A automatização de atividades de controle de projeto tais como as tarefas de build, teste, controle de dependências, integração contínua e controle de versão pode ser muito facilitado por ferramentas que suportem tais atividades de apoio ao desenvolvimento. Tendo em vista este contexto e sabendo que Maven e Gradle são ferramentas de automação de projeto, analise a veracidade de cada uma das afirmações explicitadas em I, II e III para assinalar a alternativa correta.
I.Projetos Maven são configurados usando Project Object Model (POM) que é codificada em linguagem XML;
II. Projetos Gradle são configurados usando Project Object Model (POM) que é codificada em linguagem XML;
III. Projetos Gradle são configurados em scripts escritos em linguagem Groovy. Assinale a alternativa correta.
a) Somente a afirmação I é verdadeira.
b) Somente a afirmação II é verdadeira.
c) Somente a afirmação III é verdadeira.
d) Somente as afirmações I e III são verdadeiras.
e) Somente as afirmações I e II são verdadeiras.
response: Letra D
comment: Vamos analisar os itens. I.Projetos Maven são configurados usando Project Object Model (POM) que é codificada em linguagem XML; Verdadeiro. O Maven utiliza o arquivo pom.xml para gerenciar o ciclo de vida do projeto, dependências, plugins e configurações. O POM (Project Object Model) é o arquivo principal que contém todas as definições necessárias, e ele é escrito em XML. II. Projetos Gradle são configurados usando Project Object Model (POM) que é codificada em linguagem XML; Falso. O Gradle não utiliza o conceito de POM como o Maven, nem utiliza XML para suas configurações. Gradle usa scripts escritos em Groovy ou Kotlin para definir a configuração do projeto. III. Projetos Gradle são configurados em scripts escritos em linguagem Groovy. Verdadeiro. O Gradle permite que as configurações do projeto sejam feitas em scripts escritos em Groovy ou Kotlin DSL. O uso de Groovy é bastante comum, sendo a linguagem padrão de configuração no Gradle. Então, os itens I e III são verdadeiros.
title: Maven
Other fields (not shown on cards):
back: Letra D - Vamos analisar os itens. I.Projetos Maven são configurados usando Project Object Model (POM) que é codificada em linguagem XML; Verdadeiro. O Maven utiliza o arquivo pom.xml para gerenciar o ciclo de vida do projeto, dependências, plugins e configurações. O POM (Project Object Model) é o arquivo principal que contém todas as definições necessárias, e ele é escrito em XML. II. Projetos Gradle são configurados usando Project Object Model (POM) que é codificada em linguagem XML; Falso. O Gradle não utiliza o conceito de POM como o Maven, nem utiliza XML para suas configurações. Gradle usa scripts escritos em Groovy ou Kotlin para definir a configuração do projeto. III. Projetos Gradle são configurados em scripts escritos em linguagem Groovy. Verdadeiro. O Gradle permite que as configurações do projeto sejam feitas em scripts escritos em Groovy ou Kotlin DSL. O uso de Groovy é bastante comum, sendo a linguagem padrão de configuração no Gradle. Então, os itens I e III são verdadeiros.

front: (IBFC/EMBASA/2017) O Apache Maven 3 utiliza um arquivo XML para descrever o projeto de software sendo construído, suas dependências sobre módulos e componentes externos, a ordem de compilação, diretórios e plugins necessários. Esse arquivo XML, no Maven, é tradicionalmente conhecido pela sigla:
a) POM
b) AM3
c) MVN
d) XPO
response: Letra A
comment: Agora a questão cobra o caminho contrário... o arquivo XML que descreve o projeto de software é o Project Object Model – POM.
title: Maven
Other fields (not shown on cards):
back: Letra A - Agora a questão cobra o caminho contrário... o arquivo XML que descreve o projeto de software é o Project Object Model – POM.