maven profile 동적 선택 프로필 상세 설명

배경
개발 과정 에서 우리 의 소프트웨어 는 서로 다른 운영 환경 에 직면 할 것 이다.예 를 들 어 개발 환경,테스트 환경,생산 환경 등 이다.우리 의 소프트웨어 는 서로 다른 환경 에서 어떤 설정 은 다 를 수 있다.예 를 들 어 데이터 소스 설정,로그 파일 설정,그리고 일부 소프트 부품 운행 과정 에서 의 기본 설정 등 이다.그러면 우리 가 소프트웨어 를 서로 다른 환경 에 배치 할 때마다상응하는 프로필 을 수정 해 야 한다.이렇게 왔다갔다 수정 하면 실수 하기 쉽 고 노동력 을 낭비 하기 쉽다.
maven 은 이러한 문 제 를 편리 하 게 해결 하 는 방안 을 제공 하 는데 그것 이 바로 profflee 기능 이다.
프로필 프로필
profflee 는 일련의 설정 정 보 를 정의 한 다음 활성화 조건 을 지정 할 수 있 습 니 다.이렇게 하면 우 리 는 여러 개의 프로필 을 정의 한 다음 에 각 프로필 은 서로 다른 활성화 조건 과 설정 정보 에 대응 하여 서로 다른 환경 에서 서로 다른 설정 정 보 를 사용 하 는 효 과 를 얻 을 수 있다.
profile 정의 위치
(1)특정 항목 에 대한 프로필 설정 은 이 항목 의 pom.xml 에 정의 할 수 있 습 니 다.(예 를 들 면 이런 식 이다)
(2)특정 사용자 에 대한 프로필 설정 은 사용자 의 settings.xml 파일 에서 프로필 을 정의 할 수 있 습 니 다.이 파일 은 사용자 의 집 디 렉 터 리 에 있 는"m2"디 렉 터 리 에 있 습 니 다.
(3)전역 프로필 설정.전역 프로필 은 Maven 설치 디 렉 터 리 에 있 는'conf/settings.xml'파일 에 정 의 됩 니 다.
3.동적 패키지 설정
1.프로필 설정
프로젝트 프로필 에 다음 프로필 설정 을 추가 합 니 다:

<profiles>
  <profile>
    <!--        -->
    <id>dev</id>
    <properties>
      <profiles.active>dev</profiles.active>
    </properties>
    <activation>
      <!--            -->
      <activeByDefault>true</activeByDefault>
    </activation>
  </profile>
  <profile>
    <!--      -->
    <id>release</id>
    <properties>
      <profiles.active>release</profiles.active>
    </properties>
  </profile>
  <profile>
    <!--      -->
    <id>beta</id>
    <properties>
      <profiles.active>beta</profiles.active>
    </properties>
  </profile>
</profiles> 
dev(개발 환경),베타(테스트 환경),release(발표 환경)등 세 가지 환경 을 정의 합 니 다.그 중에서 개발 환경 은 기본적으로 활성화 되 어 있 습 니 다(activeByDefault 는 true).프로필 을 지정 하지 않 을 때 기본적으로 개발 환경 이 고 package 에서 어떤 개발 환경 을 선택 할 지 표시 합 니 다.자세 한 내용 은 다음 을 참조 하 십시오.
2.프로필
서로 다른 환경 에 대해 우 리 는 서로 다른 프로필 을 정 의 했 습 니 다.파일 디 렉 터 리 는 다음 과 같 습 니 다.

그림 에서 보 듯 이 개발 환경,테스트 환경,생산 환경의 설정 파일 은 각각 src/main/resources 디 렉 터 리 에 있 는 config 폴 더 에 넣 습 니 다.
config 아래 여러 환경의 프로필 이 있 습 니 다.이름 규칙 은 application-환경 이름.properties 입 니 다.
처리 과정:
1)프로필 을 통 해 사용 할 환경 선택
2)package 명령 을 통 해 환경 변 수 를 application.properties 에 주입 합 니 다.(이렇게 되면 공용 환경 변 수 는 각 환경의 프로필 에 설정 하지 않 아 도 됩 니 다)
3)항목 에 application.xml 파일 불 러 오기
프로필 불 러 오기

<context:property-placeholder location="classpath:application.properties"/>
예:
application-beta.properties 파일 은 다음 과 같은 부분 이 있 습 니 다.

env.datasource.jdbcUrl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&autoReconnect=true&zeroDateTimeBehavior=round
env.datasource.username=root
env.datasource.password=12233
application.properties 는 위의 내용 을 주입 하 는 데 다음 과 같은 내용 이 있 습 니 다.

datasource.jdbcUrl=${env.datasource.jdbcUrl}
datasource.username=${env.datasource.username}
datasource.password=${env.datasource.password}
3.maven 자원 플러그 인 설정
pom.xml 의 build 노드 에서 자원 파일 의 위 치 를 설정 합 니 다.다음 과 같 습 니 다.

<build>
    <finalName>seewo-admin</finalName>
    <!--              -->
    <filters>
      <filter>src/main/resources/config/application-${env}.properties</filter>
    </filters>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
여기 서 매개 변수true를 주의 하 십시오.true 로 설정 해 야 env 디 렉 터 리 에 있 는 설정 파일 로 원래 의 것 을 덮어 쓸 수 있 습 니 다.
4、프로필 활성화
1)기본 활성화
위의 프로필 설정 에 설 치 된 기본 활성화 환경 입 니 다.아래 와 같다

<activeByDefault>true</activeByDefault> 
2)사용-P 매개 변수 표시 프로필 활성화
Maven 작업 을 할 때-P 매개 변 수 를 사용 하여 현재 활성 화 된 프로필 을 지정 할 수 있 습 니 다.예 를 들 어 우 리 는 프로젝트 를 포장 할 때 id 를 dev 의 profile 로 사용 해 야 한다.우 리 는 이렇게 할 수 있다.

mvn package CPdev
여기 서 dev 가 settings.xml 에서 dev 로 표 시 된 활성 상태 에 있 는 profile 이 라 고 가정 하면'-P!profflee'는 현재 작업 중 이 profflee 가 활성화 되 지 않 을 것 임 을 표시 합 니 다.
5.호출

private Logger logger = LogManager.getLogger(MyApp.class.getName());
다른 사용 은 log4j 와 같 습 니 다.
만난 구덩이
application.xml 파일 에@키 가 나타 나 지 않 습 니 다.주석 을 달 아 도 안 됩 니 다.@이 나타 나 면 모든 환경 변 수 는 주입 되 지 않 습 니 다.
예:

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기