내 단위 테스트 중 하나는 테스트 데이터로 구동되며 src/test/resources/testData.txt
에 저장됩니다. Maven은 src/test/resources
의 내용을 클래스 패스에있는 target/test-classes/
에 복사 할 것이므로 클래스 파일에서 절대 파일 이름을 신경 쓰지 않고 편리하게 읽을 수 있습니다. 여태까지는 그런대로 잘됐다.Maven 프로젝트에서 리소스의 경로를 가져올 수있는 이식성이 있습니까?
이제 원격 시스템에서 가져온 데이터로 파일을 업데이트하는 일부 코드를 사용 중입니다. 이 코드는 거의 실행되지 않고 빌드의 일부로 실행되지 않습니다. 갱신 된 파일은 소스 저장소로 커밋됩니다. 파일에 추가하려면 원래 파일의 경로를 src/test/resources
에 알려야합니다 (이 파일에 덧붙여서 target/test-classes/
이 분명히 작동하지 않음).
경로를 휴대용 방식으로 어떻게 결정합니까? 나는 그 디렉토리 이름이 실제로 바뀔 수 있기 때문에 하드 코드 src/test/resources/
을 사용하지 않을 것이다. 또한, 내 프로젝트 기본 디렉토리 이외의 현재 작업 디렉토리로 실행하면 중단됩니다.
아이디어가 있으십니까?
제가 올바르게 이해하고 있는지 확실하지 않습니다. '$ {project.basedir}/src/test/resources'는 괜찮을 것입니다.하지만 어떻게하면'$ {project.basedir}'의 값을 제 코드에서 풀 수 있습니까? –
일반적으로'myFile.path = $ {project.basedir}/src/test ...'와 같은 라인을 가진 테스트와 함께 속성 파일을 가지고 있고, [properties :] 필터 (http : /maven.apache.org/plugins/maven-resources-plugin/examples/filter.html) 빌드 할 때 메이븐에 의해 플러그인 된 정확한 경로를 얻는다. –
Ryan, 저의 문제를 해결하는 데 매우 합리적인 해결책입니다. 그러나 가능한 경우 POM과 함께 빌드 구성을 포함하는 별도의 파일을 유지 관리해야합니다. 귀하의 제안에 영감을 받아 필자는 개인적으로 선호하는 다른 솔루션을 발견했으며 아래에 답변으로 게시 할 것입니다. –