Использование тега свойств в профилях Maven

Я имею в виду "Maven: полный справочник" и особенно раздел, касающийся профилей, которые документируют использование <properties... тег в пределах <profile... пометить здесь: см. здесь

 <profile>
            <id>development</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <property>
                    <name>environment.type</name>
                    <value>dev</value>
                </property>
            </activation>
            <properties>
                <database.driverClassName>com.mysql.jdbc.Driver</database.driverClassName>
                <database.url>
                    jdbc:mysql://localhost:3306/app_dev
                </database.url>
                <database.user>development_user</database.user>
                <database.password>development_password</database.password>
            </properties>
        </profile>

Что я не уверен в том, что происходит, когда mvn install -Denvironment.type=dev команда запускается:

  • Будет ли это создать .properties файл?
  • Если нет, то как и где Tomcat (например) будет читать отдельные свойства, когда приложение тестируется в dev?

1 ответ

Решение

Будет ли это создавать файл.properties?

Нет не будет Это установит свойства, используемые maven. Это с mvn install -Denvironment.type=development maven будет использовать значение 'development_user' для переменной 'database.user' (которую вы можете использовать как ${database.user} в poms и отфильтрованных ресурсах).

Если нет, то как и где Tomcat (например) будет читать отдельные свойства, когда приложение тестируется в dev?

Дело в том, чтобы сказать maven фильтровать (и изменять) ресурсы, которые вы хотите настроить в зависимости от профиля (properties.files).

Итак, сначала вы должны сказать maven для фильтрации ресурсов:

<build>
    <resources>
        <resource>
             <directory>src/main/resources</directory>
             <filtering>true</filtering>
        </resource>
    </resources> 
</build>

Затем измените ваши файлы свойств, чтобы использовать переменные maven. Например, ваш файл свойств базы данных будет выглядеть так:

database.driverClassName=${database.driverClassName}
database.url=${database.url}
#...
Другие вопросы по тегам