본문 바로가기

Spring/Spring

스프링 부트 애플리케이션 더블 클릭으로 실행하는 방법, Fully Executable Jar (JSmooth로 .exe파일은 이제 그만!)

반응형

Running Spring boot Applications by using double click

제목은 거창해보이나 아주 간단한 설정만으로 스프링 부트 애플리케이션을 "완전히 독립적으로 실행" 할 수 있다.

기존에는 빌드를 통해서 .jar 파일을 만들고 명령 프롬프트 창에서 "java -jar XXXXX.jar" 이런 식으로 명령어를 작성해서 실행했다.

지금도 특별한 불만이나 요구사항이 없으면 그대로 사용하는 것이 좋다.

그런데 가끔은 스프링 애플리케이션을 더블 클릭만으로 실행해야할 때가 있다.

특히 소프트웨어를 제공할 때, 사용자는 개발자가 아니기 때문에 명령어 실행에 대해 거부감이 들 수 밖에 없다. 

따라서 최대한 단순하게 실행하기를 원하는 경우에 아래와 같은 방법을 사용하는 것을 고려해볼 수 있다.


Setting

* 설정 해줘야할 것은 단 하나, 바로 위 그림에서 빨간색 박스로 쳐져있는 부분을 입력해주면 된다.

pom.xml에서 spring-boot-maven-plugin 부분에 <configuration>을 추가하는 것이다.

1
2
3
<configuration>
    <executable>true</executable>
</configuration>


이렇게만 설정을 해주고 스프링 부트 애플리케이션을 빌드하면 프로젝트 경로 아래에 target에 생성되는 .jar 파일은 "java -jar" 명령이 아니어도 실행이 된다.

실행 방법

1. 명령프롬프트에서 jar파일이 있는 경로로 간 후, "XXXXXXX.jar" 실행하기

2. jar파일이 있는 폴더 열어서 더블 클릭하기

3. 기존 처럼 "java -jar XXXXXXX.jar" 실행하기

* 더블 클릭으로 실행하다보면 기존의 실행 방법(3번)처럼 로그가 찍히지 않기 때문에 정상적으로 실행 됐는지 확인이 필요하다. (ex.localhost:8080처럼 서비스 URL 확인 or 프로세스상에 떠있는지 확인)


또 다른 방법?

기존에 윈도우에서 더블 클릭으로 실행하기 위해서 JSmooth 라는 툴을 받아서 .exe로 래핑해주는 방법을 사용했었다.

이것도 완전히 변환시키는 기능은 아니고 말 그대로 .exe처럼 보이게 래핑하는 형식이었다.

JVM설정도 하고 이것저것 다소 불편했는데 간단하게 사용할 때는 위와 같이 하는 것이 좋아 보인다.

따라서 이 방법은 다른 블로그에서 참고하기 바라며 내용은 적지 않는다.


원리

Maven을 이걸 어떻게 처리하는 걸까?

아래 참고사이트에 의하면,

"JAR패키징을 한 다음에 그 파일 앞에다가 스크립트를 붙여줘서 JAR파일이 마치 실행가능한 스크립트 인것처럼 시스템이 인식하도록 만드는(속이는) 원리다."

앞에다가 스크립트를 붙이는 방법을 쓰기 때문에 "jar -xf" 같은 방법으로는 압축이 풀리지 않고 unzip을 해야한다고 한다.

* ubuntu나 centos는 잘 되지만 OS X, FreeBSD같은 운영체제는 별도의 embeddedLaunchScript가 필요하다.

좀 더 상세한 내용을 알고 싶으면 아래 참고 사이트를 확인하자.

[jar 파일을 텍스트 에디터로 열었을 때 모습]

앞 쪽에 뭔가 스크립트가 엄청나게 있고 오른쪽을 보면 살구색(?)으로 바이너리 파일이 이어지는 것을 볼 수 있다.

진짜 기본 스프링부트 애플리케이션인데도 12만? 스크립트 포함 약 13만 줄의 코드로 나타난다.


참고 사이트

https://www.youtube.com/watch?v=fbVxXFy1fKw

https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html

반응형