2010-11-26 2 views
2

maven jar 패키지 안에있는 파일을 열어야합니다. 그것은 내가 사용하는 프레임 워크에 대한 모델 구성이고 라이브러리 클래스의 생성자는 파일 유형의 객체를 전달해야합니다. 어떤 문제없이 클래스 로더를 사용하여 구성 파일에 대한 경로를 얻을 수 있습니다. 하지만 - 불행히도 - 파일은 jar 파일을 읽을 수 없습니다. 그래서 나는 을 얻습니다. java.io.FileNotFoundException. 이제이 문제에 대한 해결책을 찾고 있습니다. 내 계획은 모델 구성 파일의 압축을 풀고 임시 디렉토리에 배치하는 것입니다. 그러나 코딩을 시작하기 전에 내 같은 문제에 대한 다른 해결책이 있는지 배우고 싶습니다.Maven 패키지는 jar 패키지 안에 파일 (* File *)을 엽니 다.

업데이트 : 런타임에 파일을 읽을 필요가 있습니다. 당신이 받는다는 빌드에서 그 일을하는 경우

+0

빌드 또는 런타임시 JAR 파일에서 추출/읽어야 할 파일이 필요합니까? 아래에 두 가지 큰 해답이 있지만 개발 및 런타임 프로세스의 다른 지점에서 작업을 수행 할 수 있습니다. – jgifford25

답변

3

(항아리가 종속하지만 받는다는 이슈로 계속 사용할 수없는 경우)dependency:unpack 나는 당신이 필요로하는 것을 찾을 때까지 당신은, JAR 항목 하나 하나를 통과, JarInputStream를 사용한다고 생각합니다. 그런 다음 read() 내용은 JarEntry입니다.

+0

라이브러리에 파일이 필요한 경우 도움이되지 않습니다. –

+0

글쎄, JAR에서'read()'하고 임시'파일 '에 저장할 수 있습니다. 이 경우에도 JAR 파일을 프로젝트에 압축을 푸는 것보다 효과적입니다. – yegor256

+0

힌트를 보내 주셔서 감사합니다. 문제 해결에 도움이됩니다. ClassLoader를 사용하여 파일 (jar 파일 내의 경로)을 찾고 임시 디렉토리에 압축을 푼 다음 * FILE *로 엽니 다. – Skarab

4

는 사용하여 파일에 항아리 자원을 풀고

  • dependency:unpack-dependencies

    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
        <execution> 
        <id>unpack-dependencies</id> 
        <phase>generate-resources</phase> 
        <goals> 
         <goal>unpack-dependencies</goal> 
        </goals> 
        <configuration> 
         <includeGroupIds>the.groupId</includeGroupIds> 
         <includeArtifactIds>the.artifactId</includeArtifactIds> 
         <includes>**/path/to/your/resource.txt</includes> 
         <outputDirectory>where/do/you/want/it</outputDirectory> 
        </configuration> 
        </execution> 
    </executions> 
    </plugin> 
    
(단지 프로젝트의 받는다는 dependenies 중 하나 인 경우)

또는 사용

  • <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
        <execution> 
        <id>unpack</id> 
        <phase>generate-resources</phase> 
        <goals> 
         <goal>unpack</goal> 
        </goals> 
        <configuration> 
         <artifactItems> 
         <artifactItem> 
          <groupId>the.groupid</groupId> 
          <artifactId>the.artifactid</artifactId> 
          <version>the.version</version> 
          <type>jar</type> 
          <outputDirectory>where/do/you/want/it</outputDirectory> 
          <includes>**/path/to/your/resource.txt</includes> 
         </artifactItem> 
         </artifactItems> 
        </configuration> 
        </execution> 
    </executions> 
    </plugin> 
    
관련 문제