머리말
진통 점 :
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
Application-Test.properties
env.jdbc.username = testenv.jdbc.password = 888888
Application-Pro.Properties
env.jdbc.username = rootenv.jdbc.password = 666666
2 단계 : 총 속성 파일 응용 프로그램을 정의합니다 .properties.이 파일의 값은 application- <env> .properties의 키를 나타냅니다.
application.properties
// 참조 keyjdbc.username = $ {env.jdbc.username} jdbc.password = $ {env.jdbc.password}# public configuration salt = 123456789 3 단계 : 프로파일 구성
<profiles> <profile> <!-개발 환경-> <id> dev </id> <properties> <ev> dev> </env> </properties> <activation> <!-이 구성의 기본 활성화 설정-> <ctiveBydefault> true </activeBydefault> </activation> </profile> <profile> <!-<id> test </id> test </id> test </id> </properties> </proferties> </profile> <profile> <!-릴리스 환경-> <id> Pro </id> <properties> <env> pro </env> </properties> </profile> </profile> </profile> <profile> <!-릴리스 환경-> <id> Propecties> </env> </env> </env> </프로파일>
4 단계 : 필터 및 리소스를 구성합니다
$ {env}는 mvn package -P <env> 의 이름으로, application.properties가 속성 파일의 키입니다.
<빌드> <FinalName-App </finalName> <!-변수 구성 파일의 주소를 정의합니다-> <filters> <filter> src/main/resources/config/application/application- $ {env} .properties </filters> </filters> <Resources> <Resource> <erousce> <directory> src/main/roughts> </directory> </Resources> <Plugins> <groupId> org.apache.maven.plugins </groupid> <artifactid> maven-war-plugin </artifactid> </plugin> </plugins> </build> 패키지 및 실행
// 환경이 지정되지 않은 경우 기본값은 ActiveByDefault = true가있는 환경입니다. 현재 개발 환경 MVN 패키지 // 패키지에 지정된 환경은 -p 매개 변수를 전달합니다.
MVN Packege -P 테스트를 실행 한 결과, Classe/Application.perties의 jdbc.username 및 jdbc.password가 application-test.properties에서 구성된 Env.jdbc.username 및 env.jdbc.password의 값임을 알 수 있습니다.
스프링에서 속성 구성 파일을 사용하려면이 전체 구성 파일을 직접 소개하면 다른 환경 구성 파일의 미션이 종료되었습니다.
<context:property-placeholder location="classpath:application.properties"/>
구현 원칙 :
pom.xml에서 각각의 다른 환경에 대해 다른 프로파일을 정의하십시오. 각 프로필에는 환경 이름이 있습니다. 그런 다음 다른 환경 (예 : application-<env>.properties )에 대해 다른 구성 파일을 정의한 다음 총 속성 파일 (예 : Application.Properties)을 정의하십시오. 그런 다음 Application.properties의 값을 application-<env>.properties 에서 해당 키를 참조하고 포장 할 때 포장 할 환경의 이름을 지정하십시오. 이러한 방식으로, Application.Properties의 키 값은 환경 응용 프로그램의 해당 값-<Env> .properties입니다.
다중 자원 구현 방법
단계
1 단계 : SRC/Main/Resource에서 ENV 디렉토리를 작성한 다음 각 환경의 하위 디렉토리를 작성한 다음 각 환경 하위 디렉토리에서 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
# 공개 구성 SALT = 123456789
3 단계 : 프로파일 구성
<profiles> <profile> <!-개발 환경-> <id> dev </id> <properties> <ev> dev> </env> </properties> <activation> <!-이 구성의 기본 활성화 설정-> <ctiveBydefault> true </activeBydefault> </activation> </profile> <profile> <!-<id> test </id> test </id> test </id> </properties> </proferties> </profile> <profile> <!-릴리스 환경-> <id> Pro </id> <properties> <env> pro </env> </properties> </profeRties> <profile> <!-릴리스 환경-> <id> pro </id> <propert> <ENV> pro> </profiets>
4 단계 : 리소스 구성
<빌드> <FinalName-App </finalName> <!-변수 구성 파일의 주소를 정의합니다-> <pecuss> <resource> <eriversory> src/main/resource> <excludes> <excludes> <exclude/dev/*</exclude> <ext/test/*<ev </ev </pro/*</exclude> </excludes> <filtering> true </필터링> </resource> <Resource> <directory> src/main/resource/env/$ {env} </directory> <cluty> <clointe>*.*</incloind> <conloint> **/*. XML </include> <conlude </conture> <flucins> </resource> <groupid> org.apache.maven.plugins </groupid> <artifactid> maven-war-plugin </artifactid> </plugin> </plugin> </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을 지원 해주셔서 감사합니다.