Tenho lutado para entender qual fase do ciclo de vida padrão realmente transfere minhas dependências remotas do meu pom.xml para minha pasta .m2 local.
Pelo que entendi, ele mvn dependency:resolve
usa o plug-in de dependência maven para eliminar quaisquer dependências remotas necessárias. De acordo com esta documentação, ele deveria estar vinculado à fase de geração de fontes.
No entanto, se eu executar mvn generate-sources
, o maven não parece executar a resolução de dependência.
Suponho que isso ocorre porque o plugin de dependência maven não é executado por padrão, a menos que seja explicitamente especificado em meu pom?
De qualquer forma, parece que só conseguirei atingir essa etapa de resolução se executar mvn compile
o que mostra minhas dependências remotas sendo retiradas em algum tipo de pré-etapa colocada antes da execução do plug-in de recursos e do plug-in do compilador.
└[~/IdeaProjects/youtube-spring-reactive-programming]> mvn compile
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------< com.javatechie:springboot-webflux-demo >---------------
[INFO] Building springboot-webflux-demo 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
Downloading from central: https://repo.maven.apache.org/maven2/org/projectlombok/lombok/1.18.22/lombok-1.18.22.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/projectlombok/lombok/1.18.22/lombok-1.18.22.pom (1.5 kB at 6.1 kB/s)
Downloading from central: https://repo.maven.apache.org/maven2/org/projectlombok/lombok/1.18.22/lombok-1.18.22.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/projectlombok/lombok/1.18.22/lombok-1.18.22.jar (2.0 MB at 12 MB/s)
[INFO]
[INFO] --- maven-resources-plugin:3.3.1:resources (default-resources) @ springboot-webflux-demo ---
[INFO] Copying 1 resource from src/main/resources to target/classes
[INFO] Copying 0 resource from src/main/resources to target/classes
[INFO]
[INFO] --- maven-compiler-plugin:3.11.0:compile (default-compile) @ springboot-webflux-demo ---
[INFO] Changes detected - recompiling the module! :dependency
[INFO] Compiling 1 source file with javac [debug release 17] to target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.313 s
[INFO] Finished at: 2023-10-28T12:32:31-07:00
[INFO] ------------------------------------------------------------------------
Se eu percorrer manualmente cada fase, nunca conseguirei remover as dependências remotas até chegar à fase de compilação:
validate
initialize
generate-sources
process-sources
generate-resources
process-resources
compile <--
Não consegui encontrar nenhuma documentação granular sobre o que mvn compile
realmente está acontecendo.
Pergunta:
O que há de único na fase de compilação que dá início a essa pré-etapa de resolução de dependência que parece viver fora das fases e do ciclo de vida maior?