Предисловие
Боли точки:
В процессе разработки Java нам часто приходится сталкиваться с различными средами, такими как среда разработки, тестовая среда и формальная среда, и эти среды имеют разные требования для проектов.
Перед этим нам часто нужно вручную изменить соответствующий файл конфигурации, а затем ввести его в войну, прежде чем мы сможем развернуть его в соответствующей среде.
Тем не менее, это может легко вызвать проблемы, потому что это легко вызвать меньше или пропустить изменения, вызывая ненужные проблемы
фантастика:
Как было бы счастливо, если бы было что -то, что позволило нам указать параметр, когда мы набираем войну, и автоматически собирать проект в войну в соответствующей среде! ! !
Результат: на самом деле есть такая вещь, это Maven-Profile
В процессе разработки мы часто настраиваем различные параметры в соответствии с различными средами, такими как IP, имя пользователя, пароль, URL, секретный ключ и т. Д. Источника данных будут отличаться. Традиционный метод состоит в том, чтобы изменить значения параметров в файле свойств или комментария и комментария в файле конфигурации. Это не только подвержено ошибкам, но и тратят ненужное время. Что еще более важно, публикация кода в тестовую среду или производственную среду легко забыть изменить. Чтобы решить эту проблему, Maven предоставляет решение, которое является профилем.
Следующая картина является традиционным способом, и нуждается в комментариях и объяснениях в оба конца
Местоположение определено профилем
Реализация метода фильтра
Шаг 1: Определите три файла Application-Dev.Properties, Application-test.properties и Application-Pro.properties соответственно.
Application-Dev.Properties
env.jdbc.username = devenv.jdbc.password = 123456
Приложение-test.properties
env.jdbc.username = testenv.jdbc.password = 888888
Application-pro.properties
env.jdbc.username = rootenv.jdbc.password = 666666
Шаг 2: Определите общее приложение файла свойств.
Application.properties
// Ссылка KeyJDBC.USERNAME = $ {ENV.JDBC.USERNAME} jdbc.password = $ {env.jdbc.password}# Общественная конфигурация соль = 123456789 Шаг 3: Настройка профиля
<Профили> <Profile> <!-Среда разработки-> <id> dev </id> <properties> <erv> dev </env> </properties> <coment> <!-Установите активацию по умолчанию этой конфигурации-> <ActiveByDefault> true </activeByDefault> </activation> </profile> <proply> <! </properties> </properties> </profile> <profile> <!-Emurance Environment-> <id> pro </id> <properties> <vint> pro </env> </properties> </profile> </profile> </profile> </profile> <prifice> <!-Environment-> <id> </id> <properties> <ence> </env> </id </id> <properties> <encre> </enver> </id> <properties> <proper> </Профили>
Шаг 4: Настройка фильтра и ресурса
$ {env} -это имя mvn package -P <env> , которое сообщает ключ, применяемый в Application.Properties, является ключом файла свойства.
<Buld> <finalName> Profile-App </finalName> <!-Определите адрес файла конфигурации переменной-> <Filters> <Filter> src/main/resources/config/application/application-$ {env} .properties </filter> </filters> <surressional> <sersource> <Directory> src/main/resources </resources> </filterting> <sorraction> <sormate> <Directory> src/main/resources </filter> </resources> <blicins> <groupid> org.apache.maven.plugins </GroupId> <strifactid> mavenwar-plugin </artifactid> </plugin> </plugins> </build> Упаковка и запустить
// Если среда не указана, по умолчанию является среда с ActiveByDefault = true. В настоящее время он относится к среде разработки пакета MVN // среда, указанная в пакете, проходит параметр -p, обратите внимание, что P является капитализированным пакетом MVN -P <Env>
Из результата запуска теста MVN Packege -p вы можете увидеть, что JDBC.USERNAME и JDBC.Password в классах/приложениях. Процессы в сгенерированном целевом каталоге являются значениями env.jdbc.username и env.jdbc.password, настроенные в тестировании приложений.properties.
Если вы хотите использовать файл конфигурации атрибута в Spring, просто введйте этот файл общей конфигурации напрямую, и миссия других файлов конфигурации среды закончилась.
<context:property-placeholder location="classpath:application.properties"/>
Принцип реализации:
Определите разные профили для каждой разных средств в pom.xml. Каждый профиль имеет название среды. Затем определите различные файлы конфигурации для разных сред (например, application-<env>.properties ), а затем определите общий файл свойств (например, Application.properties). Затем позвольте значению приложения. Прозрачные ссылки ссылаются на соответствующий ключ в application-<env>.properties и укажите имя среды, которая будет упакована при упаковке. Таким образом, значение ключа в приложении.
Метод реализации с несколькими ресурсами
шаг
Шаг 1: Создайте каталог ENV в SRC/Main/Resource, затем создайте подкаталог каждой среды, а затем создайте файл с именем config.properties в каждой подкатарии среды. Каждый ключ одинаков, а значение отличается.
env/dev/config.properties
jdbc.username = devjdbc.password = 123456
env/test/config.properties
jdbc.username = testjdbc.password = 888888
env/pro/config.properties
jdbc.username = rootjdbc.password = 666666
Шаг 2: Создайте независимое применение среды.
Application.properties
# Общественная конфигурация соль = 123456789
Шаг 3: Настройка профилей
<Профили> <Profile> <!-Среда разработки-> <id> dev </id> <properties> <erv> dev </env> </properties> <coment> <!-Установите активацию по умолчанию этой конфигурации-> <ActiveByDefault> true </activeByDefault> </activation> </profile> <proply> <! </properties> </properties> </profile> <profile> <!-Среда выпуска-> <id> pro </id> <properties> <vint> pro </env> </properties> </свойства> </profile> <profile> <!-Environment Environment-> <id> pro </id> <properties> <env> pro </env> </properties> </id> <properties> </env> env>
Шаг 4: Настройка ресурса
<build> <finalName>profile-app</finalName> <!-- Define the address of the variable configuration file --> <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>env/dev/*</exclude> <exclude>env/test/*</exclude> <exclude>env/pro/*</exclude> </excludes> <Filectring> true </filtering> </resource> <sursce> <cilectory> src/main/resources/env/$ {env} </directory> <clact> <clact>*.*</includ> <clact> **/*. xml </includ> <clact> **/*. <groupId> org.apache.maven.plugins </GroupId> <ArtifactId> mavenwar-plugin </artifactid> </plugin> </placin> </plugins> </build> Шаг 5: Запустите mvn package -P test
Если вы часто используете mvn package -P <env> вы можете настроить немного Maven в идее. Шаги: редактировать конфигурации… ― + ―- Maven ―- Добавить команды Maven для каждой среды. В будущем дважды щелкните любую из конфигураций запуска, что эквивалентно выполнению команды mvn package -P <env> .
Сравнение двух способов
Метод фильтра будет составлять все файлы Application-dev.properties, Application-test.properties и Application-Pro.properties, и этот метод может использоваться только для файлов свойств. Если есть другие файлы (такие как .xml) и имеют разные конфигурации в соответствии с различными средами, с этим методом трудно справиться.
При упаковке метод мульти-ресурса упаковывает только файлы конфигурации указанной среды. Вы можете поместить различные файлы в их папки соответствующих средств, и вся папка будет упакована при упаковке. Рекомендую этот метод
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.