Приложение весенней загрузки -[профиль]. свойства не работают

У меня настроен весенний загрузочный веб-проект. Это хорошо работает, когда у меня есть только один файл application.properties со всеми деталями подключения к базе данных. Я использую базу данных MySQL. Это мой файл application.properties.

logging.file=myfilename.log
logging.path=/var/log/mydir

# db1
spring.db1.url=jdbc:mysql://[my_host_ip]/db1
spring.db1.username=my_host_username
spring.db1.password=my_host_password
spring.db1.driver-class-name=com.mysql.jdbc.Driver

# db2
spring.db2.url=jdbc:mysql://[my_host_ip]/db2
spring.db2.username=my_host_username
spring.db2.password=my_host_password
spring.db2.driver-class-name=com.mysql.jdbc.Driver

Я хочу настроить различные среды, например, производство, разработка, тестирование, подготовка, локальная.

Согласно документации, специфичной для профиля

Я создал 5 профильных файлов свойств

i) application-production.properties

ii) application-dev.properties

iii) application-test.properties 

iv) application-staging.properties

v) application-local.properties

У меня УДАЛЕНЫ свойства подключения к базе данных из файла по умолчанию application.properties.

Я добавил это в сборку Gradle, чтобы разрешить передачу активных профилей

bootRun {
    systemProperties = System.properties
}

Когда я запускаю проект с использованием gradle

./gradlew clean bootRun -Dspring.profiles.active=test

Работает, подключается к тестовой базе данных.

Но в идеальном производственном сценарии я хочу создать файл jar с профилем "test", чтобы он выполнял все тесты и создавал jar, если все тесты пройдены.

например

./gradlew clean build -Dspring.profiles.active=test

а затем разверните jar в разных средах (staging, dev, production и т. д.) и запустите

на Dev

java -jar myapp.jar  -Dspring.profiles.active=dev

на постановке

java -jar myapp.jar  -Dspring.profiles.active=staging

НО сборка не выполняется за исключением

Caused by:                          org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: The url cannot be null

Caused by: java.sql.SQLException: The url cannot be null

Другой вопрос,

Можно ли просто собрать jar, не передавая ни одной опции профиля, если у меня нет тестов в начале?

./gradlew clean build

Это терпит неудачу с этим исключением

com.st.ComputeApplicationTests > contextLoads FAILED
    java.lang.IllegalStateException
        Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException
            Caused by: org.springframework.beans.factory.BeanCreationException
                Caused by: org.springframework.beans.BeanInstantiationException
                    Caused by: org.springframework.beans.factory.BeanCreationException
                        Caused by: org.springframework.beans.BeanInstantiationException
                            Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException
                                Caused by: java.sql.SQLException

Обновить:

Как предложено в комментариях @Alex,

"ComputeApplicationTests аннотируется @SpringBootTest и не указывает никаких ActiveProfiles. Он не может найти подходящие конфигурации в профиле по умолчанию и завершиться ошибкой"

mport org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.boot.test.context.SpringBootTest; 
import org.springframework.test.context.junit4.SpringRunner; 

@RunWith(SpringRunner.class) 
@SpringBootTest 
public class ComputeApplicationTests { 

    @Test 
    public void contextLoads() { 

    } 

}

Удаление теста делает сборку успешной на данный момент.

0 ответов

Другие вопросы по тегам