https://zandi123.tistory.com/16
클래스로더란? 쉽게정리
스프링을 돌리다가 첫줄이 클래스로더에 관련된 내용이라 궁금해졌다. 위에는 자바가 실행 동작과정을 설명한 그림이에용 우선 자바 어플리케이션이 어떻게 동작하는 지 알아봐요! 1. 사용자
zandi123.tistory.com
에서 쓴 것처럼,
우리가 쓴 .java 파일은 javac에 의해 .class(바이트코드) 로 바꿔주는데,
그럼 .jar 파일은?? 이라는 생각이 들었다.
왜냐하면 이번에 새로운 프레임워크를 쓰게 되면서 jar파일을 우선 수동으로 옮겨줘야 하는 상황이 왔기 때문이다..
JAR?
자바 class 파일 등 메타데이터의 압축파일이다.
jar 명령어를 이용해서 jar파일은 만들거나, 압축을 풀 수 있다.
현재 스프링에서 jar 파일을 만들려면 , 오른쪽 Gradle 칸을 선택하고, (Intellij 기준)
build를 선택하면 builds/ libs 에 jar 파일이 2개 생성된다.
plain.jar은 실행이 안되는 jar이고,
그냥 .jar은 실행이 되는 jar파일 이란다.
그럼 왜 plain.jar 이 있는거지?
스프링 부터 2.5.0 이후에는 (나름 최근이다! ) 2개가생성된다더라. 왜?
의존성이 포함되어 있지 않은 파일이 필요할때를 위한 것이라고 한다.
사실 아직 필요한 이유를 모르겠다. 굳이 최근 버전에부터 넣을 필요가 있었을까? 구글링을 보면 대부분 plain.jar 생성막는법.. 등등이 나오고 있다.
https://velog.io/@shawnhansh/SpringBoot-Executable-jar-plain-jar
SpringBoot Executable jar & Plain jar
최근 스프링부트 2.6.7 버전으로 개발을 하는 중인데 빌드를 하면 jar 파일이 두개가 생성되었습니다. 하나는 기존에 알고 있던 [프로젝트명-버전.jar]이고, 다른 하나는 [프로젝트명-버전-plain.jar]
velog.io
참고하실 분은 참고하면 좋을 것 같다.
'TIL' 카테고리의 다른 글
1018 index 설정시 고려할 점 (0) | 2022.10.18 |
---|---|
웹소켓 정리, 스프링 간단구현 (0) | 2022.10.06 |
제네릭이란 (1) | 2022.10.04 |
N+1문제, JPA 쿼리 수 측정 (0) | 2022.09.29 |
쿠키, 세션, 토큰 차이 (0) | 2022.09.28 |