Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Falha no build package maven

Boa tarde!

Estou com dúvidas de como rodar o build package no intellij ou ate por linha de comando, pois eu tomo os erros abaixo e eles ocorrem pois precisa informar as variáveis de ambiente. O que eu achei estranho é que eu só consegui rodar o build package, quando apontei para o banco de test.

Exemplo:

mvn package -Dspring.profiles.active=prod -DDB_URL=jdbc:mysql://172.28.80.1:3306/clinica_medica_test -DDB_USERNAME=guntz -DDB_PASSWORD=guntz -DJWT_SECRET=123456789

Desse jeito eu tive sucesso, mas aí eu fiquei em dúvida... pq eu vou precisar subir isso em produção e o banco de prod não será o de test, qual a forma correta de fazer isso?

PS: todos meus profiles(aplication.properties) normal,test,dev,prod possuem variaveis de ambiente nesse molde: #DATA_SOURCE spring.datasource.url=${DB_URL} spring.datasource.username=${DB_USERNAME} spring.datasource.password=${DB_PASSWORD}

erro-parte-1erro parte 2 Insira aqui a descrição dessa imagem para ajudar na acessibilidade

6 respostas

Oi!

As vaiáveis são necessárias apenas para executar a aplicação. Durante o build elas não serão utilizadas.

Porém, durante o build os testes automatizados serão executados e se você tiver testes que se conectam no banco de dados, o application.properties será lido para obtenção dos dados de acesso ao banco de dados.

Deve ser por isso que está dando problemas no seu caso. O seu application.properties de testes deve estar com variáveis de ambiente para os dados do banco de dados. Ou seja, no seu caso será necessário passar as variáveis de ambiente durante o build, para que os testes executem normalmente.

Olá

Perfeito! entendi.

Mas no caso eu preciso que os testes sejam executados em um outro banco de dados que não o de produção, como eu devo proceder nesse caso? Como eu faço para que no momento do build, os testes que usam banco de dados de test se conectem nesse banco de test e a aplicação fique conectada no banco de dados de produção, tudo isso com uso de variáveis de ambiente.

solução!

Para gera o build, você precisa passar os valores para as variáveis de ambiente:

mvn clean package -Dspring.profiles.active=test -DDB_URL=jdbc:mysql://172.28.80.1:3306/clinica_medica_test -DDB_USERNAME=guntz -DDB_PASSWORD=guntz -DJWT_SECRET=123456789

E para executar a aplicação também, porem os valores serão do banco de produção:

java -Dspring.profiles.active=prod -DDB_URL=jdbc:mysql://172.28.80.1:3306/clinica_medica_prod -DDB_USERNAME=guntz -DDB_PASSWORD=guntz -DJWT_SECRET=123456789 -jar api-0.0.1-SNAPSHOT.jar

Certo! Mas nesse caso, quando a aplicação for executada em PRD, os testes serão executados no banco de PRD também, isso?

Na verdade não, pois os testes serão executados apenas no build.

ahh entendi... eu achei que quando fosse levantar a aplicação, por ela no ar, os testes também seriam executados