2012-11-21 2 views
1

Java 테스트 클래스 내에 키 스토어 파일 인 리소스 파일을 참조하려고합니다. 이 특성은 일반적으로 로컬 또는 원격으로 실행중인 JDK를 가리키는 특성 파일에서로드됩니다.Java - Java 클래스에서 리소스 파일을 참조하는 방법

Maven이 배포 프로세스의 일부로 빌드를 실행하면 처음에는 빌드 서버에서 빌드됩니다. 빌드 할 서버에 하드 종속성을 두지 않아도 클래스 패스에 keystore 파일을 둘 수 있기를 원합니다. (빌드 서버에 키 저장소를 둘 것입니다)

단위 테스트를 로컬에서 수행 할 때 이 구성으로 잘 작동하지만 빌드 서버에서 빌드를 실행할 때이 경로가 실패합니다. 누군가가 왜 실패하고 있는지에 대해 밝힐 수 있습니까? 내가 해결할 수있는 일은 무엇일까요? 나는 왜 그런지 알지만, 설명은 위대하다고 생각합니다.

리소스 파일

<bean id="httpClient" 
    class="myapp.HTTPClient"> 
    <property name="trustStoreLocation" value="..\\mywebapp\\target\\test-classes\\truststore" /> 
    <property name="trustStorePass" value="mypass" /> 
</bean> 
+3

당신이 하나의 기대와 봤어 슬래시 대신? 또한, 'target/test-classes ...'에 트러스트 스토어를 주차하는 것이 약간 어려워 보인다. –

+0

저에게 효과가있는 덕분에 – cduggan

답변

0

현재 구성, 나는 메이븐의 표준 디렉토리 구조를 다음과 선호합니다. 자세한 내용은 (http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html)을 참조하십시오. src/test/resources와 src/main/resources에 (.cfg 또는 .jks 또는 .properties와 같은) 파일을두면 빌드시 클래스 경로에서 자동으로 사용할 수 있습니다. 또한 테스트 및 주요 리소스 파일을 격리 할 수있는 기능을 제공합니다.

예를 들어, 내 pom.xml 파일은 다음과 같습니다 : 파일이 제대로 복사 항아리를 집계하고 원하는 파일을 확인하는 것입니다 된 경우

<build> 
    <finalName>${project.artifactId}</finalName> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
     </resource> 
     <resource> 
      <directory>src/main/config</directory> 
     </resource> 
     <resource> 
      <directory>src/main/resources</directory> 
     </resource> 
    </resources> 
    <testResources> 
     <testResource> 
      <directory>src/main/config</directory> 
     </testResource> 
     <testResource> 
      <directory>src/main/resources</directory> 
     </testResource> 
    </testResources> 

    <!-- Other pom.xml stuff --> 

</build> 

지금, 간단한 방법으로 확인합니다.

mvn build 

다음을 수행하십시오

jar -tf target/<your project jar>.jar | grep "<file name you want to verify>" 
관련 문제