Maven 의 프로필 경로 읽 기 방법

4094 단어 Maven프로필경로
Mybatis 의 핵심 클래스 인 SqlSession Factory 를 XML 설정 방식 으로 구축 할 때 설정 파일 경로 가 항상 잘못 쓰 이 는 문제 가 발생 했 습 니 다.사후에 보 니 사실 문 서 를 제대로 보지 못 하고 맹인 이 코끼리 를 만 지고 있 었 다.
다음 시간 에 XML 프로필 의 코드 를 읽 습 니 다:

var inputSteam = Resources.getResourceAsStream("config/mybatis.xml");
var sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputSteam);
처음에 저 는 설정 파일 을 src/main/java/com/imxfly/config/mybatis.xml 에 두 고 경 로 를 읽 습 니 다.com/imxfly/config/mybatis.xml 이지 만 자바.io.IOException:Could not find resource com/imxfly/config/mybatis.xml 을 알려 줍 니 다.
그래서 관건 은 이 설정 파일 경 로 를 어떻게 작성 하 느 냐 하 는 것 입 니 다.읽 는 경 로 는 현재 개발 한 디 렉 터 리 구조 가 아니 라 컴 파일 된 프로젝트 target 디 렉 터 리 에서 classes 디 렉 터 리 를 classpath(즉,루트 디 렉 터 리)로 읽 는 것 입 니 다.
만약 우리 가 설정 파일 을 src/main/java/com/imxfly/config 디 렉 터 리 에 두 었 다 면,Maven copile 을 사용 하여 컴 파일 한 후에 target 디 렉 터 리 를 보면 이 설정 파일 을 찾 을 수 없습니다.이것 은 Maven 이 컴 파일 할 때 기본적으로 src/main/java 디 렉 터 리 에 있 는.java 문서 만 읽 고.class 파일 로 컴 파일 하기 때 문 입 니 다.그래서 target 디 렉 터 리 에서 우리 의 프로필 을 찾 을 수 없습니다.어떻게 해결 하 시 겠 습 니까?
추천 하 는 방법 은 이 XML 프로필 을 src/main/resources 디 렉 터 리 에 두 는 것 입 니 다.
공식 문서클릭 하여 보기에서 이 행 위 를 명확 하 게 묘 사 했 는데 그 중에서 한 마디 가 있다.
Within artifact producing source directories (ie. main and test), there is one directory for the language java (under which the normal package hierarchy exists), and one for resources (the structure which is copied to the target classpath given the default resource definition).
resources 디 렉 터 리 에 대해 디 렉 터 리 구 조 는 target classpath 에 완전 하 게 복 사 됩 니 다.만약 에 다음 과 같은 src 디 렉 터 리 구조 가 있다 면:

.
├── main
│  ├── java
│  │  └── com
│  │    └── imxfly
│  │      └── App.java
│  └── resources
│    └── config
│      └── mybatis.xml
└── test
  └── java
    └── com
      └── imxfly
        └── AppTest.java
그럼 컴 파일 된 target 디 렉 터 리 구 조 는:

.
├── classes
  ├── com
  │  └── imxfly
  │    └── App.class
  └── config
    └── mybatis.xml
그래서 코드 에서 프로필 을 읽 는 경 로 는 다음 과 같 습 니 다.

var inputSteam = Resources.getResourceAsStream("config/mybatis.xml");
기본적으로 Maven 은 src/main/resources 에서 프로젝트 의 자원 파일 을 찾 습 니 다.
그러나 우리 의 프로젝트 구조 가 수정 되 지 않 으 면 설정 파일 은 src/main/java/com/imxfly/config/mybatis.xml 에 있 습 니 다.어떻게 합 니까?
이 때 Maven 프로필 pom.xml 에서 Maven 에 게 자원 파일 이 어디 에 있 는 지 알려 야 합 니 다.

<project>
 ...
 <build>
  ...
  <resources>
   <resource>
    <directory>src/main/java/com/imxfly/config</directory>
   </resource>
   <resource>
    <directory>src/main/java/com/imxfly/config2</directory>
   </resource>
   <resource>
    <directory>src/main/java/com/imxfly/config3</directory>
   </resource>
  </resources>
  ...
 </build>
 ...
</project>
컴 파일 할 때 Maven 은 이 디 렉 터 리 에 있 는 파일 구 조 를 target 디 렉 터 리 에 완전 하 게 복사 합 니 다(위 에서 resources 디 렉 터 리 를 완전 하 게 복사 하 는 것 과 같 습 니 다).그래서 이 때 우리 의 읽 기 경 로 는 다음 과 같 습 니 다.

var inputSteam = Resources.getResourceAsStream("mybatis.xml");
참고 자료:
https://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html
https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
Maven 의 프로필 경로 읽 기 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.Maven 프로필 경로 읽 기 내용 에 대해 서 는 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기