Spring Boot 실행 가능한 jar ทำงานยังไง

4237 단어 shellscript
ใน 리눅스 เราสามารถรันโปรแกรมแบบนี้

ls -al #lookup ls in PATH
./myprgram # รัน myprogram ที่อยู่ใน current directory


ทราบกันไหมครับว่าเราสามารถรัน spring boot jar เหมือนที่เรารันโปรแกรมในshell ได้แบบเดียวกันด้วย ถ้าเรา config spring-boot-maven-plugin executable=true
./myjar.jar 
#เราใส่ . ไปเพราะว่า Linux ไม่ได้เพิ่ม working directory เข้าไปใน PATH เหมือน Windows
# เราจึงต้องระบุพาธ(relative path)ของไฟล์ที่จะรันเอง


ปกติ ปกติ ปกติ เรา แล้ว ไม่ สามารถ รัน. jar ไฟล์ ไฟล์ แบบ นี้ ได้ เพราะ เพราะ เพราะ เพราะ ใช่ ใช่ ใช่ 스크립트 หรือ หรือ โปรแกรม แต่ มัน มัน 아카이브 ไฟล์ (zip 형식) แล้ว มัน มัน รัน แบบ นั้น ได้ ยังไง ยังไง !!!

# ปกติเรารัน jar ที่มี main-class ระบุใน manifest แบบนี้
java -jar myjar.jar


Linux เรา เรา สามารถ เพิ่ม เพิ่ม 이진 파일 (ใน ที่ นี้ นี้ คือ jar) เข้า ไป ต่อ ท้าย ท้าย 쉘 스크립트 ได้ ทำ ให้ เรา รวม 스크립트 java -jar myjar.jar กับ jar ไฟล์เข้าด้วยกันได้ และยังสาม

ตัวอย่างวิธีการทำคร่าวๆ
เตรียมไฟล์ 쉘 스크립트 สำหรับรัน java -jar

#!/bin/sh
exec java  -jar "$0"  "$@" # $@ คือ all parameter ที่เราส่งมา ยกเว้นตัวที่ 0 ($0 คือชื่อไฟล์)
exit 0
#ไฟล์ run.sh


จากนั้น เอา jar 파일 มาต่อท้าย 쉘 스크립트cat run.sh myjar.original.jar > myjar.jar모드 변경 myjar.jar ให้สามารถ 실행 ได้chmod +x myjar.jar
ทดลองรัน

❯ ./myjar.jar
Hello World


ลองดูใน 콘텐츠 ของ myjar.jar

xxd -l 100 myjar.jar
00000000: 2321 2f62 696e 2f73 680a 6578 6563 206a  #!/bin/sh.exec j
00000010: 6176 6120 202d 6a61 7220 2224 3022 2020  ava  -jar "$0"
00000020: 2224 4022 0a65 7869 7420 300a 504b 0304  "$@".exit 0.PK..
00000030: 1400 0808 0800 2c79 1c51 0000 0000 0000  ......,y.Q......
00000040: 0000 0000 0000 0900 0400 4d45 5441 2d49  ..........META-I
00000050: 4e46 2ffe ca00 0003 0050 4b07 0800 0000  NF/......PK.....
00000060: 0002 0000


메모.



นอก นอก เรา เรา จาก รัน มัน ด้วย 쉘 แล้ว แล้ว เรา เรา ยัง สามารถ รัน มัน มัน ด้วย ด้วย ด้วย ด้วย ด้วย ด้วย ด้วย ด้วย ด้วย ด้วย ด้วย ด้วย ด้วย ด้วย java -jar myjar.jar เหมือน ปกติ ด้วย ด้วย ด้วย ด้วย ด้วย ด้วย ด้วย ด้วย ด้วย ที่ ที่ ที่ สามารถ สามารถ สามารถ สามารถ สามารถ สามารถ สามารถ สามารถ สามารถ สามารถ สามารถ สามารถ สามารถ สามารถ ๆ ๆ ๆ จะ จะ จะ จะ เจอ JAR 헤인더 ถึง ทำ ทำ การ การ การ การ การ การ ทำ. 구문 분석)

ใครอยากลองทำเล่นก็ 클론 git https://github.com/pramoth/executable-jar มาเล่นได้เลยครับ

ส่วน 스프링 부트 จะใช้ 스크립트 นี้ https://github.com/spring-projects/spring-boot/blob/2.3.x/spring-boot-project/spring-boot-tools/spring-boot-loader-tools/src/main/resources/org/springframework/boot/loader/tools/launch.script
โดย spring-boot-maven-plugin เป็นคนเอาไปรวมกับ jar

อ้างอิง
https://coderwall.com/p/ssuaxa/how-to-make-a-jar-file-linux-executable

좋은 웹페이지 즐겨찾기