2017-03-19 4 views
0

I했습니다 다음 디렉토리 구조가 드롭 마법사 프로젝트 :

basedir 
    pom.xml 
    config.yml 
    src 
    main 
     resources 
     myresource.xml 
The build portion of 
<build> 
    <finalName>project-${version}</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <version>2.1</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>shade</goal> 
        </goals> 
        <configuration> 
         <transformers> 
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
           <mainClass>project-package.App</mainClass> 
          </transformer> 
          <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"> 
          </transformer> 
         </transformers> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

I을 이클립스에서 내 코드를 실행하면 다음과 같이 명령어를 사용한다.
$ mypackage.App 서버 config.yml
잘 작동하고 resources 디렉토리 아래에있는 파일을 읽을 수있다. mvn을 사용하여 작성한 스냅 샷 jar에는 config.yml이 포함되지 않으며 basedir의 snapshot.jar에 포함되어 있어도 "myresource.xml"에 대한 경로가 누락되었습니다. 그래서, 내 항아리 파일에서 실행할 때 내 코드는 리소스로 찾지 않습니다. pom.xml을 config.yml을 포함하도록 변경하고 자원 디렉토리가 자원으로 액세스 할 수 있도록 패키지화해야합니다.

+0

'dropwizard'의 설정의 주요 아이디어는 설정을 외부화하는 것입니다. dropwizard 응용 프로그램의 사용자/관리자는 주어진 시스템 및/또는 환경에서 응용 프로그램을 시작할 때 올바른 구성을 제공 할 책임이 있습니다. 아마도 알 수없는 기본 구성을 사용하지 마십시오. 당신은 실제 configs 어딘가에 (예를 들어 다른 버전 관리 저장소) 코드에서 별도로 유지. 샘플 구성을 배포 할 수 있지만 문서를 배포하는 방법이 더 많습니다. – zloster

+0

맞습니다. config 파일은 빌드와 별도로 보관해야합니다. – user2995358

답변

0

this.getClass().getResource("myresource.xml") 

가 IDE에서 작업을 수행하지만 당신은 항아리에서 실행되지 때 정말 이상하다.

this.getClass().getResourceAsStream("myresource.xml") 

은 IDE와 jar에서 모두 작동합니다.

그게 리소스 문제를 해결합니다. 그러나 config.yml 파일을 패키지하는 방법에 대한 대답이 필요합니다. jar 파일 외에 별도로 제공해야합니까?

+0

내 의견을 확인하십시오. http://stackoverflow.com/questions/42884004/how-to-package-config-yml-and-resources-in-project-0-0-1-snapshot-jar#comment72966041_42884004 – zloster