Maven 프로젝트 중 resources 설정 요약

배경
보통 Maven 프로젝트 의 파일 디 렉 터 리 구 조 는 다음 과 같 습 니 다.

# Maven         
src
 main
 java   #    
 resources #    
 filters #      
 config #    
 scripts #    
 webapp #web    
 test
 java #     
 resources #      
 filters #        
 it  #    
 assembly #assembly descriptors
 site #Site
target
 generated-sources
 classes
 generated-test-sources
 test-classes
 xxx.jar
pom.xml
LICENSE.txt
NOTICE.txt
README.txt
그 중에서 src/main/resourcessrc/test/resources 은 자원 파일 디 렉 터 리 입 니 다.본 고 는 자원 파일 과 관련 된 설정 을 상세 하 게 소개 할 것 이다.
제1 부분 기본 설정 소개
우 리 는 Maven 구성 요 소 를 사용 하여 프로젝트 를 구축 할 때 보통 프로필 을 자원 파일 디 렉 터 리 에 놓 습 니 다.이 디 렉 터 리 에 대해 pom.xml 파일 에 대해 정 의 를 내 렸 습 니 다.우 리 는 먼저 사례 를 보 겠 습 니 다.

<build>
<resources>
 <resource>
 <directory>src/main/resources</directory>
 <filtering>true</filtering>
 <includes>
  <include>application.properties</include>
 </includes>
 </resource>
 <resource>
  <directory>src/main/resources</directory>
  <filtering>false</filtering>
  <excludes>
   <exclude>application.properties</exclude>
  </excludes>
 </resource>
</resources>
</build>
  • 라벨 <directory> 지정 자원 파일 디 렉 터 리;
  • 태그 <include> 지정 자원 파일 디 렉 터 리 중 어떤 파일 이 포장 되 었 습 니까?
  • 태그 <excludes> 지정 자원 파일 디 렉 터 리 중 어떤 파일 이 포장 되 지 않 습 니까?
  • 특히 라벨 <filtering>bool 값 이 고 기본 값 은 false 입 니 다.maven 자원 파일 에서 자원 파일 과 같은 변 수 를 사용 할 수 있 습 니 다.
    
    # application.properties
    application.user=${username}
    application.password=${password}
    파일 에서 placeholder 자리 표시 자 를 사용 하여 변 수 를 표시 합 니 다.이 때 ${keyword} 파일 에서 변수의 값 을 정의 할 수 있 습 니 다.
    
    <properties>
     <username>mysql</username>
     <password>password123</password>
    </properties>
    설정 파일 의 변 수 를 실제 값 으로 바 꾸 려 면 pom.xml 을 열 어야 합 니 다.이 값 은 <filtering> 으로 설정 되 어 있 습 니 다.
    제2 부분 구체 적 인 설정 과 주의사항
    2.1 사례 설명
    위의 소개 에 따 르 면 처음에 예 에서 true 의 배치 설명 이 있 는데 각각 의 미 는 다음 과 같다.
  • 첫 번 째 설정 의 의 미 는 설정 파일 디 렉 터 리 resource 에서 다른 파일 을 걸 러 내 고 src/main/resources 파일 만 보관 하 는 것 입 니 다.그리고 application.properties 변수 교체 속성 을 오픈 합 니 다.
  • 두 번 째 설정 의 의 미 는 설정 파일 디 렉 터 리 filtering 에서 src/main/resources 파일 을 걸 러 내 고 다른 파일 은 모두 보존 한 다 는 것 입 니 다.또한 application.properties 변수 교체 속성 을 닫 습 니 다.
  • 특히 주의해 야 할 것 은 이 두 개의 filtering 은 모두 자원 디 렉 터 리 <resources> 에 대한 설정 정의 이 고 하 나 는 <src/main/resources> 을 유지 하 는 것 이 며 하 나 는 application.properties 을 제거 하 는 것 이다.이렇게 두 설정 이 충돌 하지 않 습 니까?실제로 두 설정 은 호 환 됩 니 다.마지막 으로 두 개의 설정 을 각각 걸 러 낸 파일 집합 을 합 친 것 입 니 다.
    예 를 들 어 자원 디 렉 터 리 application.properties 에 세 개의 파일 이 있 습 니 다.
    
    application.yml
    application.properties
    application.xml
    컴 파일 후 src/main/resources 경로 에 세 개의 프로필 이 있 습 니 다.첫 번 째 프로필 필터 후 파일 집합 은 target/classes 이 고,두 번 째 프로필 필터 후의 집합 은 {application.properties} 이 며,마지막 으로 집합 을 취하 면 최종 컴 파일 결 과 를 얻 을 수 있 습 니 다.
    2.2 정규 필터
    자원 디 렉 터 리 에 있 는 파일 을 필터 할 때 정규 표현 식 도 지원 합 니 다.예 를 들 면:
    
    <include>**/*.xml</include>
    이 표현 식 은 자원 디 렉 터 리 아래 의 모든 {application.yml,application.xml} 파일(하위 디 렉 터 리 아래)을 포함 하고 있 음 을 나타 낸다.
    2.3 변수 자리 차지 문자
    여기 서 주로 xml 의 기능 을 가리킨다.예 를 들 어 아래 의 <filtering> 파일 은 연구 개발 xml 을 정의 했다.
    
    <profiles>
      <profile>
       <id>dev</id>
       <properties>
        <resource.delimiter>${}</resource.delimiter>
        <username>mysql</username>
        <password>password123</password>
       </properties>
       <activation>
        <activeByDefault>true</activeByDefault>
       </activation>
      </profile>
     </profiles>
    
    설정 에서 정 의 된 <profile>username 두 변수의 값 입 니 다.password 컴 파일 을 사용 한 후 설정 파일 의 자리 표시 자 변 수 는 바 뀌 었 습 니 다.
    
    application.user=mysql
    application.password=password123
    주의해 야 할 것 은 package -P dev 태그 설정 을 추가 하여 자리 표시 자 형식 을 정의 하 였 습 니 다.가방 에 의존 하 는 다른 <resource.delimiter> 파일 도 자리 표시 자 형식 을 지정 하여 형식 이 일치 하지 않 을 때 가 있다.예 를 들 어 spring boot 는 기본 자리 차지 기호${}을@var@로 바 꾸 었 습 니 다.따라서 배치 하 는 것 을 권장 합 니 다.그렇지 않 으 면 환경 이 오염 되 기 쉽 습 니 다.
    2.4 잘못된 관점 에 대한 설명
    이 주제 에 관 한 글(예 를 들 어 pom)에서 같은 CSND<resource><include> 이 존재 한다 고 생각하면 충돌 이 발생 한다.이때 <exclude> 을 기준 으로 한다.
    이 논점 에 대해 필 자 는 실제 실험 을 했 는데 같은 <exclude> 에서 <resource><include> 을 동시에 배치 했다.
    
    <build>
    <resources>
     <resource>
     <directory>src/main/resources</directory>
     <filtering>true</filtering>
     <includes>
      <include>application.properties</include>
     </includes>
     <excludes>
      <exclude>application.properties</exclude>
     </excludes>
     </resource>
    </resources>
    </build>
    
    컴 파일 결과 프로필 이 <exclude> 에 압축 되 지 않 았 습 니 다.이 논점 에 문제 가 있다 는 것 을 설명 하 다.같은 target/classes 에서 두 가지 설정 이 교 집합 되 었 음 을 나타 낸다.
    2.5 하위 디 렉 터 리
    자원 디 렉 터 리 도 하위 디 렉 터 리 를 지원 합 니 다.즉,자원 디 렉 터 리 아래 에 하위 디 렉 터 리 를 만 들 수 있 고 포장 과정 에서 하위 디 렉 터 리 구 조 를 유지 합 니 다.예 를 들 면:
    
    resources
     -test
     --app.xml
     -application.yml
     -application.properties
     -application.xml
    프로젝트 컴 파일 후 하위 디 렉 터 리 에 자원 파일 이 남아 있 으 면 하위 디 렉 터 리 의 구조 도 유 지 됩 니 다.예 를 들 면:
    
    target
     -classes
     --test
     ---app.xml
     -application.yml
     -application.properties
     -application.xml 
    두 번 째 부분 리 소스 자원 읽 기
    예 를 들 어 우리 의 프로필 resource 형식의 프로필 은 아래 의 문 구 를 사용 하여 읽 을 수 있 습 니 다.
    방법 1.컴 파일 된 classes 디 렉 터 리 에서 찾 습 니 다.
    
    InputStream is = this.getClass().getResourceAsStream("/" +application.properties);
    방법 2,properties 전체 classes 디 렉 터 리 에서 찾기;
    
    InputStream is = this.getClass().getClassLoader().getResourceAsStream(application.properties);
    ClassLoader 을 사용 하 는 공구 꾸러미 Java 읽 기:
    
    import java.util.Properties;
    
    Properties properties = new Properties();
    InputStream is = this.getClass().getClassLoader().getResourceAsStream(application.properties);
    properties.load(is)
    
    //       name    
    System.out.println(properties.get(getProperty("name")))
    
    다른 유형의 프로필 은 독 자 를 읽 으 면 자 료 를 찾 을 수 있 습 니 다.
    참고 문헌 및 자료
    1,Maven Resources 플러그 인,링크:https://maven.apache.org/components/plugins-archives/maven-resources-plugin-2.6/
    2.Maven 자원 필터 의 설정,링크:http://c.biancheng.net/view/5285.html
    Maven 프로젝트 의 resources 설정 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.Maven resources 설정 에 관 한 더 많은 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 저 희 를 많이 사랑 해 주세요!

    좋은 웹페이지 즐겨찾기