spring-boot maven 플러그인을 통해 실행 가능한 jar를 빌드하고 있습니다. xml 파일을 런타임에 올바르게 읽을 수 있도록 종속 항아리 중 하나를 압축 해제해야합니다. 나는 libs 압축 풀기에 관한 문서를 따라 갔다. 나는 항아리의 내용을 확인하고 포장을 해체 정보가 항아리에 인코딩 된 것을 확인스프링 부트 requiresUnpack은 런타임에 채워지지 않습니다.
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<requiresUnpack>
<dependency>
<groupId>com.deep6analytics.pipeline</groupId>
<artifactId>pipeline-services-ctakes</artifactId>
</dependency>
</requiresUnpack>
</configuration>
</plugin>
</plugins>
:
$ zipnote target/pipeline-apps-annotation-server-1.0-SNAPSHOT.jar | grep -C 1 UNPACK
@ BOOT-INF/lib/pipeline-services-ctakes-1.0-SNAPSHOT.jar
UNPACK:1e6eda0ca9f1b740c4aba6058cac74a5084f1706
@ (comment above this line)
이 문서에 따르면, 런타임에, 내가 예상 다음과 같이 내 플러그인 설정입니다 내 $ TMPDIR 내에서 "스프링 부팅 libs와"디렉토리를 볼 수 있습니다 :
가 <의 groupId 01,235,831,177와 < 종속 > 각 라이브러리를 지정및 <artifactId>이며 런타임시 $ TMPDIR/spring-boot-libs에 압축이 풀립니다.
그러나 응용 프로그램을 실행할 때 $ TMPDIR을 확인하고 압축을 푼 디렉토리가 보이지 않습니다. 결과적으로, 내 응용 프로그램을 시작할 수 없습니다 :
ls -la $TMPDIR
drwxr-xr-x 3 staff 102 Aug 10 23:40 pipeline-apps-annotation-server-1.0-SNAPSHOT.jar-spring-boot-libs-96fe7360-b23b-4caa-a2ce-75aa0300a417
drwxr-xr-x 3 staff 102 Aug 10 23:27 pipeline-apps-annotation-server-1.0-SNAPSHOT.jar-spring-boot-libs-a06a2373-0694-42e9-bee1-29191b3b764a
drwxr-xr-x 4 staff 136 Aug 10 20:54 sp_update
drwx------ 2 staff 68 Aug 10 11:30 ssh-azEJDYkZH6ho
drwxr-xr-x 3 staff 102 Aug 10 15:05 tomcat.104726406473930572.8085
drwxr-xr-x 3 staff 102 Aug 10 23:38 tomcat.1527552147767629466.8080
drwxr-xr-x 3 staff 102 Aug 10 23:13 tomcat.1546871599966723864.8080
사람이 내가 잘못, 또는 내가 뭔가를 오해하고 무엇을 볼 수 있습니까?
Ok - 항아리가 "폭발"되어 항아리 내의 각 리소스가 디스크의 파일로 존재할 것이라고 생각했습니다. 따라서 "언 패킹"이 실제로 수반하는 것에 대한 명확성이 도움이 될 것입니다. jar 파일을 직접 읽을 수 있도록 파일 시스템에 jar 파일의 리소스를 추출하려면 어떻게해야합니까? –
왜 그렇게하고 싶은지 모르겠지만 ClassLoader.getResourceAsStream()을 통해 리소스에 액세스 한 다음 파일에 쓸 수 있습니다. 그래도 중간 언 패킹 단계를 거치지 않고도이 작업을 수행 할 수 있습니다. –
불행히도 중첩 된 XML 문서를 통해 반복되는 인프라를 사용하고 있습니다. 포함 된 모든 문서가 파일 시스템에 있다고 가정합니다. 그래서 그 사실을 바꾸기 위해 내가 할 수있는 일은 없습니다. 그래서이 파일을 jar 파일에서 가져 와서 파일 시스템에 저장해야합니다. –