스프링 부트 실행 파일 병을 추출할 수 없는 이유는 무엇입니까?
스프링 부트 프로젝트, 실행 가능한 병으로 빌드하지만 실행 가능한 병을 추출할 수 없다는 것을 발견했습니다. 예를 들어,
jar xvf spring-boot-foo-0.0.1-SNAPSHOT.jar
무출력그러나 일반적인 병을 추출할 때는 성공적입니다.
jar xvf mysql-connector-java-5.1.38.jar
created: META-INF/
inflated: META-INF/MANIFEST.MF
created: META-INF/services/
...
왜 이러한가?
넌 할 수 있다.less
다음을 찾을 수 있습니다.
#!/bin/bash
#
# . ____ _ __ _ _
# /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
# ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
# \\/ ___)| |_)| | | | | || (_| | ) ) ) )
# ' |____| .__|_| |_|_| |_\__, | / / / /
# =========|_|==============|___/=/_/_/_/
# :: Spring Boot Startup Script ::
#
즉, 일반적인 병이 아니라 병 뒤에 있는 bash 파일입니다.
이 파일을 추출할 수 있습니다.unzip spring-boot-foo-0.0.1-SNAPSHOT.jar
또는 spring-boot-maven-filen의 실행 파일 플래그를 false로 설정하여 일반 jar 파일을 만듭니다.
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>false</executable>
</configuration>
</plugin>
저는 보통 7zip을 사용하여 윈도우에서 파일을 추출하는데 잘 작동하지 않았습니다.@peace0phmind 덕분에 텍스트 편집기(notepad++)로 열려고 했고 내용이 셸 스크립트와 바이너리 코드로 이어지는 것을 보았습니다.
나는 방금 bash 스크립트 줄을 모두 제거하고 파일을 저장했으며 이제 7zip으로 열 수 있습니다.
7zip을 사용하여 Springboot 실행 파일 병을 열 때 .jar 파일을 마우스 오른쪽 버튼으로 클릭하고 두 번째 7zip 옵션 "Open Archive..추가 형식에서 zip 형식을 선택합니다.보관 파일로 열기를 선택하면 작동하지 않습니다.
Spring boot 2.6.7로 업그레이드하고 gradle bootJar 태스크를 사용하여 실행 파일 jar를 생성합니다.이제 실행 가능한 병이라도 추출할 수 있습니다.
이것이 Spring boot 2.6.x의 버그인지 확실하지 않습니다.
Spring boot version 2.6.7, Spring cloud version 2021.0.0, Gradle 6.9.0으로 시도했습니다.
표준 zip 보관 도구를 사용하여 병을 추출하는 것을 제한할 수 없습니다.
언급URL : https://stackoverflow.com/questions/37783069/why-cant-i-extract-a-spring-boot-executable-jar
'programing' 카테고리의 다른 글
부하가 있는 동안 기본값으로 열을 추가하는 가장 좋은 방법 (0) | 2023.07.11 |
---|---|
PL/SQL 저장 프로시저의 AST(추상 구문 트리)에 액세스하려면 어떻게 해야 합니까? (0) | 2023.07.11 |
베어러 토큰이 필요한 API를 사용하여 Python에서 API 호출하기 (0) | 2023.07.11 |
도커 컨테이너에서 실행 중인 mongoDB에 연결할 수 없습니다. (0) | 2023.07.11 |
ASP.NET 웹사이트의 Elmah 보안 (0) | 2023.07.11 |