Spring Boot (Maven)

스프링부트 백그라운드3 ( 빌드툴 )

pjh8838 2024. 6. 2. 16:49
반응형

1. 빌드툴 (build tool)

 1) 개념
   - 개발시 사용되는 자동화 툴.

   - 어플리케이션을 개발할 때 개발자들이 개발을 편하게 하기 위한 자동화 툴

 2) 종류

   - Maven (메이븐)

      자동화라고 해도 프로젝트에 알려줘야 한다 ( 환경설정 )
       => pom.xml ( 설정파일: jdk/boot 버전, 필요한 jar 파일들 설정)

   - Gradle (그레들) 

      자동화라고 해도 프로젝트에 알려줘야 한다 ( 환경설정 )
       => build.gradle ( 설정파일: jdk/boot 버전, 필요한 jar 파일들 설정)


  3) 빌드툴 기능

    가. 이전 개발 프로세스

     소스코드작성   ---->    컴파일    --->   테스트 파일작성(단위테스트)  ---->   컴파일   ------>    패키징(jar/war)    --->   배포
                  필요한 외부 jar 다운                                                             
                                + 
                          빌드패스
     <-------------------------------------------------------------------------------------------------------------------------------------------------------->
         개발자가 직접 수동으로 해줌.


    나. 빌드툴 적용한 개발 프로세스

      소스코드작성   ---->   컴파일   --->   테스트 파일작성(단위테스트)    ->   컴파일   ------>   패키징(jar/war)   --->  배포 
                    필요한 외부 jar 다운
                                + 
                          빌드패스
     <--------------------------------------------------------------------------------------------------------------------------------------------------------->
                빌드툴이 거의 자동화해줌 ( Maven, Gradle )

 

 

 


 

2. SpringBoot 프로젝트 생성 방법

 

==> 명시적으로 빌드툴 (build tool) 선택해야됨.
  ==> 
     STS 4 버전
       ==> pom.xml 파일의 프로젝트 태그내의 값은 변경해야 된다.
       변경전: https://maven.apache.org/xsd/maven-4.0.0.xsd
       변경후: http://maven.apache.org/xsd/maven-4.0.0.xsd

     JDK: 11 버전
     SpringBoot: 2.7.18 버전

1) STS에서 직접생성
    - STS에서 New > Spring Starter Project 선택

 

 



 2) Spring Initializer 이용한 방법
https://start.spring.io/

Boot 버전, Java 버전은 나중에 바꿈

제너레이션 후 workspace에 저장, 여기에 압축풀기
import - Maven - 이그지스팅 - demo찾기

 

Boot 버전, Java 버전 수정

 

 

프로젝트 태그 오류 해결 방법

http로 바꿔서 강제 다운로드를 한다

 

프로젝트 변경사항 업데이트 적용. Force 체크 안해도됌(강제 업데이트)

 


 

3. Maven의 기본 디렉터리 구조

 

 src/main/java :  이전 이클립스의 src 경로와 동일.  *.java 저장
src/main/resource:  *.java 제외한 나머지 파일들 저장.
                         예> jdbc.properties, EmpMapper.xml ( 이전에는 src 에 저장 )

src/test/java :  단위 테스트 용도의  *.java 저장
src/test/resource:  단위 테스트 용도의  *.java 제외한 파일 저장.

JRE System Library : jdk 11 용 jar파일들 저장.
Maven Dependencies : SpringBoot에서 사용해야 되는 jar파일들 저장.

        - junit( mockito ) 관련 jar: 단위 테스트 용도
        
        - logback(log4j, slf4j) 관련 jar:  로그출력 ( 로깅: logging )
                          - 이제부터 System.out.println 더 이상 사용안함.

        - spring-beans, spring-core 관련 jar : Spring Framework

        - spring boot 관련 jar: Spring Boot 

    ===> 저장 경로는 C:\Users\ssginc76\.m2\repository 이다. (로컬 저장소 )

       pom.xml ( Project Object Model )
       - 버전, 필요한 jar 정보등 설정
       - 계층구조로 구성됨. ( 부모에 해당하는 pom.xml 있음 )
       - 필요로 하는 jar 파일은  태그로 설정하면 자동으로 다운로드 되고 build path까지 해줌.
         http://mvnrepository.com

 

 

Maven의 주요 기능

 

가. 의존성 설정
      - pom.xml 에 필요로 하는 jar 파일은  태그로 설정하면 자동으로 다운로드 되고 build path까지 해줌.
      - http://mvnrepository.com 에서  정보를 얻을 수 있음.

 

maven jar파일을 받는 곳

 

검색

 

사용하는 버전 클릭

 

복사

 

pom.xml에 복붙하면 파일 생김(의존성 설정)

 

 

인터넷 환경이 안좋은 곳에서는 다운로드가 제대로 안될 수 있다 

 

해결방법

다운로드 잘 된 사람의 로컬 저장소를 복붙

 



나. 빌드시 사용되는 단계별 명령어
       compile
       test
       package
       install
       deploy
       clean

 

메인메서드는 se 환경에서는 스타팅포인트

웹환경에서는 메인 없었음

 

메인이 꼭 필요한 경우는 스탠다드 환경

없어도 되는 경우는 웹 환경

 

=> 근데 스프링부트는 무조건 메인 메서드가 있어야 된다.

 

 

 

프로젝트 실행 방법1
프로젝트 실행 방법2

 

 

다시 빌드 단계별 명령어

compile
test
package
install
deploy
clean

 

Goals에 명령어 삽입

 

 

=> package는 복사하고 컴파일하고 테스트하고 패키징( 배포할때 패키징(jar/war) )까지 해줌

 

프로젝트 새로고침하면 target파일에 jar 생김

=> jar파일이 데모 프로젝트의 패키징

 

=> 이런 단계적인 작업을 Maven이 도와줌

=> AWS에 배포할 때 쓸 예정

728x90
반응형