2012-08-30 2 views
0

maven의 도움으로 개발 된 java 프로젝트가 있습니다. 프로젝트의 일부는 단위 테스트입니다. unittest에 의해 생성 된 모든 임시 파일을 maven의 대상 디렉토리에 넣을 계획입니다. 이것은 임시 파일이 unittest에 의해 제거되지 않는 이유가 무엇이든간에 대상 디렉토리가 정리되고 모든 임시 파일이 여전히 파일 시스템에 남아 있기 때문에 좋은 아이디어 일 수 있습니다. 그래서 나는 메노 리소스 플러그인의 filtering 함수를 발견하고 가능하면 내 유스 케이스에 대해 인스턴스화 할 수 있는지 궁금해하고있었습니다. 내 계획은 속성의 항목이 나에게 달인의 위치가 대상 디렉토리를 드러내는 속성을 제공해야이maven 리소스 플러그인에서 maven 필터링 기능을 사용하는 방법

targetdir = ${project.build.directory} 

같은 파일을하는 것입니다. 이제 caveeat는 필터링 된 속성 파일이 maven 리소스 플러그인에 의해 대상 디렉토리에 저장됩니다.
어떻게 찾을 수 있습니까? target-directory가 어디에 있는지 알려주려면 properties 파일이 필요하지만 대상 디렉토리에 properties-file이 있습니까? 내 접근 방식은 아직 끝나지 않았습니까? 또는이 방법이 가능하지 않습니까?

+0

테스트를. 그래서'targetDir = .'을 만들지 않겠습니까? – Nishant

+0

테스트는 target-dir에서 실행되지만 응용 프로그램은 다양한 위치에 파일을 저장하며 이러한 위치는 명령 줄 매개 변수 또는 속성 파일로 아직 구성 할 수 없습니다. 함수 호출에 매개 변수로만 전달할 수 있습니다. – Matthias

답변

1

내가 두 가지 방법으로 가지고있다 :

1.을 자바 매직
여기 , 난 그냥 트릭을 달렸다는

@Test 
public void testpath(){ 
    //gets me surefire report dir, lies just below /target 
    File testDir = new File(TestTargetPath.class.getResource("/").getPath()); 
    //Get its parent! location of target 
    System.out.println("target? " + testDir.getParent()); 

    //modify your properties object to set this as targetDir 
} 

target? /home/naishe/workspace/in/naishe/homeapp/target 

를 인쇄 2. 공동 상대 경로를 사용하는 리소스로 nfig 파일

Maven 레이아웃에는 구성 등록 정보와 같은 리소스 파일을 넣을 위치가 두 곳 있습니다.

  1. /src/main/resources -이 파일은 아티팩트의 일부로 사용됩니다. 하지이 유물의 일환으로 가는가,이에 따라 파일,하지만 그들은 모든 클래스 /src/test/java에서 사용할 수 있습니다 - 당신은 /src/main/java

  2. /src/test/resources에서 모든 클래스에서 getResource()를 사용하여 액세스 할 수 있습니다.

그래서, 당신의 필요가 무엇인지에 따라, 당신은 사용하여 설정 파일을 당신의 config.properties에서 하나 개 또는 두 장소를 유지하고 읽을 수 있습니다 : 대상 디렉토리에서 실행

Properties props = new Properties(); 
    InputStream stream = AppConfig.class.getResourceAsStream("/config.properties"); 
    props.load(stream); 
    System.out.println(">> " + props.getProperty("targetDir")); 
+0

"MyAppConfigInMainCode"에 대해 좀 더 자세히 설명해 주시겠습니까? 이게 뭐야? 특성 파일은 단위 테스트에서 사용됩니다 (src/main/resources에 넣기를 제안했기 때문에). – Matthias

+0

@Matthias 업데이트 됨. – Nishant

관련 문제