Conforme a documentação do próprio Maven, os escopos possuem um papel em limitar as dependências transitivas e o controle de quando um dependência pode ser incluída no classpath do projeto.
O Maven provê alguns escopos que podem ser utilizados para configurar as dependências do seu projeto. Neste post, vamos falar de forma resumida dos 5 principais escopos. São eles:
compile: Escopo padrão, quando não se especifica nenhum outro escopo. Dependências configuradas com este escopo são disponibilizadas para todo o classpath de um projeto.
provided: Basicamente utilizado para dependências que serão adicionadas ao classpath em tempo de compilação e testes. Mas o ponto forte da utilização deste escopo é quando existe uma necessidade em adicionar uma ou mais dependências já existentes dentro de um contexto específico. Na maioria dos casos, isso acontece quando estamos fazendo um deploy de uma aplicação web dentro de um container que já possui dependências em comum.
runtime: Esta escopo fala por si. O Maven inclui dependências configuradas como runtime no classpath em tempo de execução (runtime) e testes.
system: Este escopo é similar ao provided mas com uma diferença. Para a utilização do escopo system, é necessário especificar o caminho do Jar. Lembrando que este escopo está depreciado.
Material de estudo
Se quer aprender mais sobre o assunto e alcançar um alto nível de conhecimento, recomendo fortemente a leitura do(s) seguinte(s) livro(s):
Maven: The Definitive Guide (English Edition) é um livro escrito em inglês que vale muito a pena ter no seu acervo caso você queira entender mais sobre o assunto. Maven é hoje o principal gerenciador de dependências em projetos Java encontrado no mercado, em qualquer projeto seja ele nacional ou internacional, Maven vai estar presente facilitando a instalação de bibliotecas e dando suporte aos builds dos projetos.
Recomendo também os seguintes materiais para complementar seus estudos:
Use a cabeça: Java é um clássico onde qualquer iniciante no assunto deve ler e estudar. Neste livro você aprenderá sobre os principais pilares de Java como, orientação a objetos, criação de classes, interfaces e seu funcionamento, controlar exceções, objetos genéricos e muito mais. Se quer entrar de cabeça neste mundo, é uma excelente opção!
Padrões de Projeto é um livro no qual recomendamos após alcançar uma certa maturidade em programação em geral. Escrito por grandes nomes do assunto e traduzido para o português, Padrões de Projeto ou Design patterns como também são conhecidos, são padrões e estratégias que te ajudará a resolver diferentes desafios arquiteturais, aplicando soluções de forma elegante.
São estratégias em que desenvolvedores de todo o mundo tem adotado em seus projetos. Imagina se você precisa atuar em um projeto internacional, caso este projetos tem adotado estratégias de Padrões de projeto, você não terá nenhuma grande dificuldade em entender a dinâmica e a arquitetura do código ou caso contrário, você mesmo poderá aplicar os conhecimentos adquiridos através deste livro.
O mais interessante que Padrões de Projeto independem de linguagem de programação, é possível aplicar em qualquer outra linguagem, ou seja, é um conteúdo 100% reutilizável.
Java Efetivo escrito por Joshua Bloch e traduzido para o português, é um livro excelente para aqueles que possuem um pouco mais de experiência com Java mas que precisam aprofundar em detalhes mais específicos da linguagem como, quando e como usar específicos Padrões de Projeto ou Design Patterns, utilização de Lambdas e Streams, concorrências e serializações. Para aqueles que possuem mais de experiência, é um excelente material de consulta.
Comments