Maven-war-plugin 을 사용 하여 Maven 프로젝트 를 동적 으로 포장 합 니 다.

5807 단어 maven
다음으로 전송:http://nileader.blog.51cto.com/1381108/449956
프로젝트 발 표를 진행 할 때 이러한 상황 에 부 딪 힐 수 있 습 니 다.프로젝트 소스 코드 가 변 하지 않 는 전제 에서 서로 다른 운영 환경 에 대해 해당 하 는 운영 패 키 지 를 얻 기 를 바 랍 니 다.(예 를 들 어 war 패키지)
그러면 설정 파일 을 사용 하면 이 문 제 를 해결 할 수 있 습 니 다.프로젝트 와 운영 환경 과 관련 된 일부 매개 변 수 를 설정 파일 에 넣 을 수 있 습 니 다.모든 환경 에 한 부 씩 넣 을 수 있 습 니 다.그러면 포장 하기 전에 이번 포장 을 지정 하면 이번 포장 에 필요 한 설정 파일 을 지정 해 야 합 니 다.그래서 실행 가방 을 환경 과 대응 시 킬 수 있 습 니 다.그러나 이런 방법 은 좋 지 않 습 니 다.설정 파일 의 선택 은 인위적인 간섭 이 필요 합 니 다.만약 에 이런 상황 에 부 딪 히 면:모모 씨,저 에 게**환경의 가방 을 주세요.이때 평소 방법 으로 제 가 어디 를 고 쳐 야 하 는 지 바로 기억 하고 프로젝트 에 제 가 어떤 설정 을 해 야 하 는 지 알 게 하 는 것 입 니 다.
현재 다른 방법 이 있 습 니 다.maven-war-plugin 을 사용 하면 포장 명령 을 실행 할 때 제 가 어떤 환경 에서 가방 을 칠 지 지정 할 수 있 습 니 다.제 가 지금 어떤 프로필 을 사용 할 지 주목 할 필요 가 없습니다.물론 Maven 프로젝트 에 만 적 용 됩 니 다.
maven package–P youEnvName   이렇게 하면 youEnvName 환경의 실행 패 키 지 를 칠 수 있 습 니 다.
첫걸음 아니면 서로 다른 환경 을 위해 서로 다른 실행 매개 변 수 를 준비 해 야 합 니까?src/main/resources 디 렉 터 리 에 두 개의 파일 을 만 들 고 각각 두 환경의 서로 다른 매개 변 수 를 설정 합 니 다.설정 파일 은 합 법 적 인 properties 파일 이 어야 합 니 다.예 를 들 어:
src/main/resources/IProject-test.properties   
src/main/resources/IProject-real.properties 
 각각 테스트 와 정식 두 환경 에 대응 합 니 다.그 안의 내용 은 당연히 두 개의 key,한 개의 value 가 다른 key-value 입 니 다.
src/main/resources/IProject-test.properties 의 내용 은 보통 이 렇 습 니 다(사례 만).
system.envid=real  
method.version=1.0.0. release   
………  
두 번 째 단계 ,src/main 아래 에 새 디 렉 터 리 를 만 듭 니 다.예 를 들 어 src/main/packageFilter
그리고 이 몇 개의 인자 에 사용 할 하나 이상 의 프로필 파일 을 찾 아 냅 니 다.(보통 이 프로필 들 은 WEB-INF 디 렉 터 리 에 있 습 니 다)src/main/packageFilter 디 렉 터 리 로 이동 합 니 다.(이 럴 때 프로필 이 바 뀌 었 습 니 다.프로젝트 아 시 겠 습 니까?서 두 르 지 않다. 
이 설정 들 은 src/main/packageFilter 디 렉 터 리 에 설 정 된 후,위 에 설 정 된 몇 개의 매개 변 수 를 사용 하여 수정 해 야 합 니 다.(예시 일 뿐 입 니 다.)
  
      
        ${ system.envid }value>  
    property>  
bean> 
여기 보이 시 죠?인 자 는${key}의 자리 표시 자 를 사 용 했 습 니 다. 
세 번 째 단계 ,pom 파일 에 패키지 플러그 인 의존 도 를 추가 합 니 다:
  
     src/main/resources/IProject-test.properties filter>  
filters>  
  
    org.apache.maven.pluginsgroupId>  
    maven-war-pluginartifactId>  
      
          
              
                src/main/packageFilterdirectory>  
                truefiltering>  
                WEB-INFtargetPath>  
            resource>  
        webResources>  
    configuration>  
plugin> 
여기 서 방금 언급 한 그 문 제 를 해결 할 수 있 습 니 다.설정 파일 이 이동 한 것 처럼 보이 지만 알려 줄 필요 가 없 는 항목 입 니 다.사실 프로젝트 에서 설정 파일 을 불 러 올 때 저 희 는 완전한 것 을 포함 하지 않 는 설정 을 항목 이 놓 아야 할 위치 에 두 었 습 니 다.여 기 는 다음 설정 으로 이 루어 집 니 다.
  
    src/main/packageFilterdirectory>  
    truefiltering>  
    WEB-INFtargetPath>  
resource> 
이 설정 은 포장 할 때 src/main/packageFilter 의 파일 을 모두 옮 겨 야 한 다 는 뜻 입 니 다.
  WEB-INF
디 렉 터 리 에서 가 고 이 과정 은 덮어 씁 니 다.  동시에 true 는 이'운반'과정 에서 필 터 를 해 야 한다 고 지정 했다.
그리고 여기에 또 하나의 라벨 이 있다.
자,새로운 문제 가 나 왔 습 니 다.필터 가 무엇 입 니까?이제 마지막 단계 로 들 어 갑 니 다. 
제 4 단계 , 아니면 pom.xml 파일 에서 다음 과 같은 정 보 를 설정 합 니까?
  
    profile for bulid   
      
        testid>  
          
              
                 src/main/resources/IProject-test.propertiesfilter>  
            filters>  
        build>  
    profile>  
      
        realid>  
          
              
                 src/main/resources/IProject-real.propertiesfilter>  
            filters>  
        build>  
    profile>  
profiles>  
자,이제 알 겠 죠?단어 filter 에 따 르 면 이 설정 이 무엇 인지 알 수 있 습 니 다.그의 작업 과정 은 포장 할 때 입 니 다.
사용 명령
mvn package –P real.
그러면 그 는 real 에 대응 하 는 매개 변수 정 보 를 src/main/resources/IProject-real.properties 를 찾 아 그 중의 key-value 쌍 으로 src/main/packageFilter
의 파일 을 걸 러 내 고 완 성 된 프로필 을 모두 WEB-INF 로 옮 길 것 입 니 다.또한 설정 할 때 탭 을 남 겨 두 었 기 때 문 입 니 다.
  
     src/main/resources/IProject-test.properties filter>  
filters>  
  
……..  
이것 이 바로 기본 매개 변수 입 니 다.즉,뮤 직 비디오 패키지 를 실행 할 때 이 파일 의 매개 변 수 를 기본적으로 사용 하여 걸 러 내 는 것 은 실행 에 해당 합 니 다. 
mvn package –P test. 
어떻게 디 버 깅 합 니까?
     여기 서 소개 하 는 방법 을 통 해 알 수 있 듯 이 설정 파일 의 인 자 는 포장 할 때 만 진정 으로 채 워 집 니 다.그러면 Eclipse 에서 디 버 깅 하고 자 하 는 항목 은 어떻게 합 니까?(예 를 들 어 Jetty 플러그 인 으로 Maven 프로젝트 를 디 버 깅 할 때 프로젝트 를 패키지 로 만 들 지 않 고 src/main/webapp 을 프로젝트 루트 경로 로 직접 실행 합 니 다.) 
    위 에서 언급 했 듯 이 maven-war-plugin 은 작업 과정 에서 src/main/packageFilter 파일 을 모두 WEB-INF 로 옮 기 고 덮어 씁 니 다.
따라서 이렇게 처리 할 수 있 습 니 다.디 버 깅 을 개발 할 때 프로필 디 렉 터 리 에 완전한 프로필 을 올 릴 수 있 습 니 다.그 안에 필요 한 인 자 를 채 우 면 디 버 깅 을 순조롭게 진행 할 수 있 고 포장 에 영향 을 주지 않 습 니 다. 
주의 사항
     이 제 는 디 버 깅 을 할 수 있 습 니 다.그러나 디 버 깅 을 개발 하 는 과정 에서 이 프로필 에 변경 이 있 으 면 템 플 릿 파일 에 반영 해 야 합 니 다.따라서 채 워 야 할 설정 에 주석 을 추가 하 는 것 을 권장 합 니 다.자신 에 게 알려 줄 수 있 습 니 다.
  

좋은 웹페이지 즐겨찾기