Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] No pom.xml resolvi todas as linhas de erro mas não entendi o porque

Ao pesquisar pela versão mais recente do h2database, veio isso:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.2.224</version>
    <scope>test</scope>
</dependency>

continuei com tudo que tinha que fazer e na execução aparecia muitos erros, depois de 1h resolvi tirar <scope>test</scope> e passou a funcionar. Ficando assim:

<dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>2.2.224</version>
</dependency>

Eu gostaria de entender por que então veio com o <scope>test</scope>? Ele serve para algo?

1 resposta
solução!

Oi Fabyan,

O scope define o escopo em que essa dependência estará incluída. O test quer dizer que essa dependência só "existe" em código de teste, o código principal da aplicação não vai reconhecer essa dependência.

Aqui vão outros exemplos:

  • compile: Será incluída durante a compilação, teste e execução do projeto.

  • provided: A dependência é esperada para ser fornecida pelo ambiente de execução (por exemplo, pelo servidor de aplicação) durante a execução, mas precisa estar disponível durante a compilação.

  • runtime: A dependência é necessária durante a execução, mas não durante a compilação.

  • test: A dependência é necessária apenas durante a execução de testes.

Em resumo, Isso é vantajoso pois permite separar bem as responsabilidades das dependências; diminuir o tamanho do pacote final, melhorando a eficiência na implantação; gerenciar versões e conflitos, podendo ter mais de um vez uma mesma dependência em versões diferentes, cada uma útil dentro de um escopo específico; isolar o ambiente de testes, podendo adicionar diversas dependências que não vão influenciar em nada na aplicação.