2016-07-14 4 views
0

Hy, Maven 프로젝트에서 리소스 폴더 (예 : C : \ Users \ Raul \ workspace \ Serial \ src \ test \ resources)를 가져오고 싶지만이 java 코드를 실행할 때마다 :Maven 리소스 폴더

C : 그것은 나에게이 경로를 반환
System.out.println(getClass().getResource("").getPath()); 

/사용자/라울/작업/시리얼/목표/테스트 클래스/

내가 메이븐을 사용하는 마지막 시간을, 나에서 변경하지 않고 그런 식으로 일했다. Thx 사전에.

+0

리소스는 (필연적으로) 파일 시스템 항목이 아닙니다. 그것들을 그대로 사용하지 마십시오. –

+0

프로그램은 거기에서 파일을 생성, 수정 및 삭제해야합니다. –

+0

정말 그렇게해서는 안됩니다. 개발 환경과 런타임 환경을 섞지 마십시오. –

답변

1

일반적인 설정으로 Maven은 리소스를 target/classes (또는 target/test-classes) 디렉토리에 복사합니다. 또한 target/classes (또는 target/test-classes) 디렉토리가 클래스 경로에 추가됩니다.

파일이 src/test/resources/foo.txt 인 경우 getResource("/foo.txt")을 사용하여 파일에 액세스합니다.

일반적으로 코드가 소스 폴더를 참조하여 리소스에 액세스하는 것을 원하지 않을 것입니다. 리소스는 여러 위치에 배치 될 수 있으며 리소스를 "필터링"(토큰을 빌드 속성 값으로 대체)하는 것이 일반적입니다. 필터링의 경우에는 처리 된 리소스 파일을 원본 디렉터리에 저장하지 않는 것이 좋습니다.

+0

thx. jar 파일 내부에서 파일을 쓰고 읽어야하는 경우 (일반 사용자는 볼 수 없음) 어떻게해야합니까? –

+0

@RaulVasi 최근에 시도하지는 않았지만 classpath에있는 모든 jar 파일은'getResource()'를 사용하여 사용할 수 있다고 생각합니다. bar.jar에 foo.txt라는 최상위 레벨에 파일이 포함되어 있다면, 파일이 항아리에 있거나 클래스 패스에 직접 있는지 여부에 관계없이 'getResource ("/ foo.txt")라고 말할 수 있다고 생각합니다. – Rob