Как заставить Spring Boot автоматически считывать ресурсы, в которые были введены свойства?

#java #spring-boot #maven

Вопрос:

Я использую автоматическое расширение свойств для ввода некоторых значений в application.properties. Эти свойства зависят от профиля maven. Вот пример из pom.xml :

     <profiles>
        <profile>
            <id>development</id>
            <properties>
                <log.output.dir>target/logs</log.output.dir>
                <log4j2.xml.location>target/classes/log4j2-spring.xml</log4j2.xml.location>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <resources>
                    <resource>
                        <filtering>true</filtering>
                        <directory>src/main/external-resources</directory>
                        <includes>
                            <include>*.*</include>
                        </includes>
                    </resource>
                </resources>
            </build>
        </profile>
    ...
 

Идея заключается в том, что для некоторых профилей я вводлю определенные значения, а для некоторых полностью исключаю внешний каталог ресурсов (иногда приложение запускается без встроенного tomcat с внешней конфигурацией). Я хотел бы избежать использования файлов свойств, специфичных для профиля, чтобы иметь меньше файлов для обслуживания.

Подстановка работает, и файлы с введенными переменными помещаются в target/classes соответствии с документами maven.

Однако, когда я запускаю проект в IntelliJ , используя профиль разработки, Spring Boot берет ресурсы из src/main/external-resources , а не target/classes , я предполагаю, основываясь на каталоге ресурсов, который я определил в разделе профиль.

Есть ли способ заставить Spring Boot считывать файлы с введенными свойствами при работе в режиме разработки без добавления дополнительных аргументов командной строки/системных свойств? Возможно, дополнительное свойство maven?

Другими словами, чтобы другим разработчикам, которые открывают проект и запускают его, не нужно было добавлять дополнительные аргументы или обмениваться файлами конфигурации?