Java Spring Boot 001-1 | Build Automation 도구

Yunny.Log ·2022년 1월 20일
0

Spring Boot

목록 보기
7/80
post-thumbnail

Spring Boot에서 Java의 빌드를 자동화 시켜주는 Maven / Gradle

  • JAVA로 이뤄진 프로젝트는 .java 파일에 정의된 java source code로 이뤄짐
  • jdk : 자바 소스 코드를 자바 바이트 코드로 바꾸기 위한 javac 파일이 들어있는 상태

> javac 란?

  • JAVA COMPILER (컴파일 : 인간을 위한 소스코드를 기계가 알아들을 수 있게 기계어로 바꾸는 과정)

  • 컴파일 다음 단계는 **BUILD** 라고한다

  • 빌드란 실제로 어떤 기계어가 실행이 되어서 완성이 되는데까지 필요한 모든 과정을 빌드라고 함

<빌드의 과정>

  1. javac를 통해서 java 언어를 컴파일 한다
  2. java 소스코드는 java byte code로 변환되게 된다
  3. 테스트 코드로 만든 bytecode는 그 단계에서 바로 실행을 한다
  4. 실행 후 아무 문제 없다면 이를 실행 가능한 파일로 제작 (=패키징 과정)

=> - 하지만 javac 명령어만으로도 전체 프로젝트를 다루기는 어려움

==> 이를 보완하고자 Maven 과 Gradle 이라는 아이가 등장 (spring boot initializer)

  • 자바 프로젝트 관리하기 위한 가장 대표적인 도구, 이들을 빌드를 자동화시켜주는 역할을 한다

Maven

  • JAVA를 위한 빌드 자동화 도구

  • 사실 JAVA이외의 C#, Ruby 등의 다른 언어를 위해서도 사용하지만 거의 다 JAVA로만 쓰인다

  • Project Object Model (POM)

  • xml의 형태로 프로젝트 정의

  • pom.xml 분석해 프로젝트 빌드

  • 메이븐에서는 pom.xml 파일이 존재하는 곳이 프로젝트의 근본이라고 간주하는 것 가능


Maven으로 파일 제작해보기

  • spring initializer 에서 나같은 경우에는

    위와 같이 파일을 생성해서 프로젝트를 만들었다.

  • pom.xml 구조 살펴보기

1. properties : 속성 나타내는 부분

1) 버전 나타내는 부분

2) parent - 상속과 관련된 부분

3) initializer 설정에서 정했던 부분들

2. dependency : 사용할 외부 라이브러리 명시해주는 부분

3. build : 빌드를 어떠한 방식으로 진행할 것인지 명시해주는 부분

Gradle

  • JAVA를 위한 Build Automation 도구
  • C, C++, JS, 등을 위해서도 사용 가능

bundle.gradle

  • grooby라는 언어로 프로젝트 정의
  • sub-project 등을 포함시키는 용도의 settings.gradle 도 존재
  • kotlin을 사용해 정의 가능 (build.gradle.kts)

Gradle 로 파일 제작

  • spring initializer 에서 gradle 로 파일 생성

  • gradle 로 선택

  • 아래와 같이 프로젝트가 잘 생성됨


1) plugin : 할 수 있는 태스크들

  • 어떤 식으로 버전 관리, 의존성 관리 할 건지

  • gradle 의 장점
    => incremental build (점진적인 빌드)
  • 일정 부분까지 빌드가 되면 그 이후로는 그 부분까지 다시 빌드할 필요가 없음
  • BUT 초기 단계에선 maven 보다 조금 더 느린 경우가 있음

(+) IntelliJ, Maven으로 파일 생성 시 java.lang.ClassNotFoundException에러

  • maven으로 파일을 생성하니 위와 같은 에러가 뜨는 상황이 발생

나는 모든 해결방법을 해보았는데 절대 에러가 풀리지 않아서 그냥 spring initializer에서 파일을 다시 만들 때, 버전을 다른 아이로 바꿔주면서 에러를 해결하고자 했음

=> 해결방법


(1) 시도 1 : main, test 지우는 것 => 실패


(2) 시도 2 : => 실패


(3) 시도 3 : => spring boot 버전을 잘 골라야 하는 듯

원래는 2.6.~ 아니고 다른 버전으로 선택하고 만들 땐 계속 오류가 났었는데, 2.6~로 선택해주니 아무 에러 없이 잘 돌아간다.. 만약 나와 같은 에러가 나는 사람들이 있다면 spring initializer에서 다시 파일을 버전에 맞게 생성하는 것을 추천드림

0개의 댓글