/ POSTS

[Build] IntelliJ IDEA를 사용하지 않고 프로젝트 빌드를 해보자

Note : 이 글은 지극히 주관적인 생각을 토대로 작성된 글입니다. 혹시나 잘못된 부분이 있다면 메일 또는 코멘트를 통해 알려주시면 감사하겠습니다. 😄 제 메일은 About 탭에서 확인하실 수 있습니다. 📧

P.S : 이 페이지는 웹에 최적화 된 페이지입니다. 가급적 모바일이 아닌 웹에서 보시는 것을 추천드립니다.

Intro..

이번 포스팅에선 예전부터 작성하려고 했었던 Spring 프로젝트 빌드 관련으로 포스팅을 작성해보려고 한다. 일반적으로 Spring Framework를 이용해서 웹 애플리케이션 개발을 진행할 때 프로젝트 빌드에 대해서 딱히 깊은 생각을 하지 않을 것이다. 이유인즉슨, 우리는 대부분 IntelliJ IDEA라는 통합 개발 환경을 이용해서 개발을 진행하기 때문이다. 그렇기에 프로젝트를 빌드하고 실행시켜야 할 때 인텔리제이 우측 상단 바로 밑에 있는 재생 모양의 초록색 삼각형 버튼을 누르면 IntelliJ IDEA가 마법처럼 프로젝트를 빌드 및 실행을 시켜준다.

인텔리제이에 있는 마법의 초록색 삼각형 버튼

본인 또한 인텔리제이를 이용해서 개발을 진행하였으므로 개발하는 동안 빌드에 대해서 딱히 깊은 생각을 하지 않았었다. “인텔리제이가 알아서 해주는구나.” 딱 이 정도였다. 그러다 문득, 인텔리제이를 사용하지 않으면 빌드를 어떻게 진행할 수 있을까? 라는 궁금증을 자아냈고, 그래서 인텔리제이 없이 Spring 프로젝트를 빌드 및 실행을 시킬 수 있는 방법을 찾아보게 되었다. 그렇게 알게 된 내용을 이 포스팅을 통해 공유하고자 한다.

첫번째 방법, IntelliJ IDEA를 이용해서 프로젝트를 Open

  • 포스팅의 타이틀과는 부합하지 않지만, 스프링 프로젝트를 실행시킬 수 있는 가장 직관적이면서 간단한 방법이다.

  • Open을 위한 방법은 간단하다. 인텔리제이를 실행시키고, 상단 메뉴바에서 File 탭을 클릭 후 Open 탭을 누른 뒤 스프링 프로젝트의 경로로 이동해서 스프링 프로젝트를 선택한 뒤 Open 시키면 된다.

File -> Open 탭 클릭
Spring 프로젝트 경로를 찾아간 뒤 OK 클릭
  • 특히, 개발중에 기능 확인 및 여러 테스트를 위해 로컬에서 실행시키는 작업을 반복해야 한다면, 이 방법이 가장 간단하면서 편하다.

  • 대부분의 Spring Framework를 사용하는 개발자가 인텔리제이를 사용하니까, 인텔리제이라고 가정했지만, 이클립스 기반의 STS로도 스프링 프로젝트를 빌드 및 실행시킬 수 있다.

    • 하지만 정신건강이 좋지 않아질 수 있으므로 추천하지 않는다.

    • 많은 사람들이 인텔리제이를 사용하는데는 이유가 있다..

두번째 방법, 프로젝트를 Jar 형식으로 만들어서 실행시키는 방법

  • 이 방법은 프로젝트를 배포할 때 많이 사용하는 방법으로 프로젝트를 Jar 포맷으로 만들어서 이 Jar 파일을 빌드 및 실행을 시키는 방법이다.

  • 이 방법은 어떤 Build Tool을 사용하는 지에 따라 명령어가 조금씩 차이가 있다.

  • Build ToolGradle을 사용하는 경우.

    • 먼저 gradle clean이라는 명령어를 먼저 실행한다.
$ gradle clean

BUILD SUCCESSFUL in 15s
1 actionable task: 1 executed
  • 빌드가 성공적으로 진행되었다면 위와 같이 표시되었을 것이다.

  • 다음으로 gradle build을 실행한다.

$ gradle build

> Task :test
...

BUILD SUCCESSFUL in 54s
5 actionable tasks: 2 executed, 3 up-to-date
  • 성공적으로 빌드가 되면 위와 같이 성공적으로 Build가 되었다고 나타난다.

  • 이제 프로젝트의 루트 경로를 살펴보면, build라는 디렉토리가 생성된 것을 확인할 수 있다.

  • build 디렉토리 내부에 많은 디렉토리가 존재하는데, 그 중에 libs라는 디렉토리를 살펴보면 jar 형식의 파일이 생성된 것을 볼 수 있다.

  • jar 파일이 있는 위치에서 java -jar [jar 파일 명]을 이용해서 프로젝트 빌드 및 실행을 시킬 수 있다.

    • 예를 들어 jar 파일의 이름이 boot-0.0.1-SNAPSHOT.jar라고 한다면, 다음과 같이 명령어를 입력하면 된다.

    • java -jar boot-0.0.1-SNAPSHOT.jar

  • Build ToolMaven을 사용하는 경우.

    • 먼저 Maven설치해야 한다.

    • 그 다음 프로젝트 경로에 가서 Gradle에서 했던 것과 비슷한 역할을 하는 명령어인 mvn clean을 입력한다.

$ mvn clean
[INFO] Scanning for projects...
[INFO]
[INFO] -----< kr.ac.springboot.term:resume >------
[INFO] Building resume 0.0.1-SNAPSHOT
[INFO] ---------------[ jar ]---------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ resume ---
[INFO] Deleting C:\Users\odh62\Desktop\OneDrive_2020-03-06\resume\target
[INFO] --------------------------------------------
[INFO] BUILD SUCCESS
[INFO] --------------------------------------------
[INFO] Total time:  2.373 s
[INFO] Finished at: 2020-03-06T23:32:57+09:00
[INFO] --------------------------------------------
  • 명령어가 성공적으로 수행되었다면, 위와 같이 BUILD SUCCESS라고 터미널에 나타날 것이다.

    • 그 다음 이제 프로젝트를 jar 형식의 파일로 만들어 줄 명령어인 mvn package를 입력한다.
$ mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] --------< kr.ac.springboot.term:resume >--------
[INFO] Building resume 0.0.1-SNAPSHOT
[INFO] -------------------[ jar ]----------------------
[INFO]
[INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ resume ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 41 resources

...

[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO]
[INFO] --- maven-jar-plugin:3.1.2:jar (default-jar) @ resume ---
[INFO] Building jar: C:\Users\test\testDir\resume\target\resume-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.1.6.RELEASE:repackage (repackage) @ resume ---
[INFO] Replacing main artifact with repackaged archive
[INFO] -----------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] -----------------------------------------------------------
[INFO] Total time:  47.466 s
[INFO] Finished at: 2020-03-06T23:36:28+09:00
[INFO] -----------------------------------------------------------
  • 빌드가 성공적으로 마무리 되고, Jar 형식의 파일이 성공적으로 만들어졌으면 BUILD SUCCESS라고 터미널에 나타난다.

  • 위 로그에 나타난 것처럼 프로젝트 루트 경로에 target이라는 디렉토리 안에 가보면 jar 파일이 생성된 것을 확인할 수 있다.

  • 생성된 jar 파일을 이용해서 프로젝트 빌드 및 실행을 진행하면 된다. 진행 방법은 위에 적힌 방법과 같다.

세번째 방법, build.gradle에 메인 애플리케이션 프로퍼티를 추가해서 실행시키는 방법

  • 이 방법은 Build ToolGradle을 사용하는 사람들만 사용할 수 있는 방법이다.

  • 이와 비슷한 방식으로 Maven에서도 사용할 수 있을 것이라 생각이 들지만, 시도해보진 않았다. 내가 주로 쓰는 Build ToolGradle이기 때문이다.

  • 이제 구체적인 방법을 살펴보자. Build ToolGradle을 사용한다면, 누구나 build.gradle을 많이 사용할 것 이다. 이 build.gradle에 다음과 같은 프로퍼티를 추가해주도록 하자.

bootRun {
    main = 'com.test.TestApplication'
}
  • 본인은 임의로 넣어줬지만, 자신의 프로젝트에 있는 메인 애플리케이션의 이름을 넣어주면 된다.

    • 예를 들어 rootProjectNameTarget이면 com.target.TargetApplication으로 채워주면 된다.
  • build.gradle에 위와 같이 프로퍼티를 추가해주었다면, 이제 프로젝트의 루트 경로로 나와서 다음과 같이 명령을 입력하면 된다.

$ ./gradlew bootRun
  • 그럼 프로젝트가 빌드가 되고 실행이 되는 것을 확인할 수 있다. 인텔리제이에서 애플리케이션을 구동시키는 것과 같은 결과를 확인할 수 있다.

  • 하지만 테스트 용도로 사용하는 것을 권장하며, 메인으로 배포할 떄 이런 형식으로 사용하는 것은 권장하지 않는다.

마치며

이번 포스팅에서는 Spring Framework로 개발한 애플리케이션을 빌드 및 실행시키는 방법을 다양하게 살펴보았다. 이러한 방식을 통해서 인텔리제이가 없더라도, 다양한 환경에서 프로젝트를 빌드 및 구동시킬 수 있을 것이고, 여러 상황에서 도움이 될 것이다. 사실 여기서 얘기한 방법 말고도 더 다양한 방법이 있으리라 생각이 들지만, 내가 알고 있는 것은 여기서 얘기한 세 가지 정도이다. 이번 포스팅은 여기서 마무리하고 다음에 관련 내용 또는 다른 내용으로 새로운 포스팅을 작성해보겠다.