배움 __IL/TIL 1기

TIL : 56번째- 230222 [2-3-수]

Mo_bi!e 2023. 2. 22. 18:26

I. 웹개발

 

의존성관리도구

What (정의) : 외부 라이브러리를 사용관리하기 위 한 도구이다. 즉 프로젝트와 해당 라이브러리간 상관관계를 용이하게 하기 위함이다.

Why (존재이유) : 외부라이브러리는 업데이트 등으로 version up이 되어서 라이브러리를 교체해주는 과정에서 휴먼에러가 발생한다

본 도구를 이용하면 pom.xml 등에서 한줄로 간단하게 해결이 가능하다 결국 불필요한 공수가 줄어든다. (시간절약, 안전성)

How (방법) : pom.xml (Project Object Model) 에 프로젝트에 필요한 라이브러리를 정의한다. 메이븐은 네트워크를 이용해서 프로젝트에 해당 라이브러리를 주입시킨다.

e.g. (예) : Maven, Gradle, Ant

 

 

1. Maven 이란

(1) 프로젝트 빌드과정

1)

모든 프로젝트는 여러 과정을 거친다. 여러 과정을 하는게 이클립스인데, 이클립스는 빌드도구인가?

 

ERP( 전사적 자원관리) 회사는 수많은 자원이 존재한다 모든 자원들을 다 관리하겠다는 것이 전사적 자원관리이다.

그렇다면 IDE는 빌드 툴이 포함되어있는 더 큰 도구이다 (전사적인 느낌)

 

IDE는 빌드툴에는 없는 코드편집기, 탐색기, 번역기, 등이 있다.

 

2)

이클립스만을 위한것이 아니라 빌드도구는 모든 IDE에 결합되는 범용빌드도구가 있다

빌드도구이클립스에 특정된 프로젝트가 아니라 메이븐 프로젝트로 하면 모든 개발도구에서 로드해서 쓸 수있다

심지어 커맨드라인 명령어 가지고있어서 IDE가 없어도 일괄 프로젝에 컴파일과 배포가 가능하다

 

이제 프로젝트만들때 이클립스보다는 메이븐으로 하자!

 

(2) 최근 IDE에 프로젝트 관리와 관련되어 포함되어 있는 전문화된 도구들

1)



아직 maven이 가장 대표적이고, 새로운 것을 쓰는 사람은 Gradle을 쓴다.

 

(3)이클립스가 제공하지 않는 Maven 만의 기능

라이브러리 설정은 너무 좋다 왜냐하면 의존성 체크(라이브러리 간, 프로젝트와 라이브러리 간 의존성)해줘 

내가 쓸래하는순간 알아서 다 세팅해줘!

 

메이븐은 IDE영항을 안받아. 자신만의 환경을만들어! 그러면 설치가 필요해

 

2. Maven 설치하기

(1) 메이븐 설치 (home brew)

맥북의 경우 brew install mvn 을 하면 손쉽게 가능하다

 

 

(2) Maven 자바 프로젝트 생성

1)

남이 만들어놓은 프로젝트기 기반해서 만들 수있음

 

2)

mvn archetype:generate -DgroupId=com.newlecture -DartifactId=javaprj -DarchetypeArtifactId=maven-archetype-quickstart

터미널에서 해당 프로젝트 폴더에서 다음 명령어를 실행한다 다 하면 아래와 같은 slapshot이 출력된다.

 

 

 

3)

 

성공적으로 하면 target이 나온다.

 

4)

mvn package 를 하면은 jar 파일이 나온다

패키지를 만들어서 배포파일로 가능하다

 

지금까지 메이븐 하위명령어 이용했다

 

(3) 빌드 생명주기

프로젝트 빌드 단계의 순서집합임 (왜냐하면 메이븐은 프레임웍이기 때문이다. 이를 라이프사이클이라 함)

메이븐으로 할 수있는 하부 명령어 집합인데

얘들은 빌드할 때 사용하는 단계들이다

 

컴파일이전에 validate 가 가능하다

처음에 프로젝트가 유효한지 validate 로 유효성 검사 / 유효하다면 compile하면되고, 유효하게 되는지 test가 가능하다

 

(4) 기본 라이프사이클과 플러그인

1)

여기서 노란색과 흰색으로 들어온게 있다. module같은 것이다.

 

프로그램만들 때 라이프사이클 듣는건 중요하다. 절차를 가지고있는데, 사용자가 바꿔끼울 수 있는 것이 있다–

 

여기 <phases> 내가 바꿔 끼울 것들을 의미한다 필요한 것만 끼워넣고, 필요없으면 뺀다.

여기서 흰색은 있지만 구동장치가 없다. 노란파란은 현재 들어가있어서 동작을 하고있다

내가 실행할때 컴파일을 실행하는데 그 위에것을 벗겨서 한다

 

2)

플러그인들이 다양하다

 

 

(5)실행하기

1)

   <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

pom.xml 에 dependency 넣는거에 따라서 자동으로 설치가 된다

 

2)

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>6.0.5</version>
</dependency>

스프링을 입력한다.

 

이렇게 위계가 있기 때문에 원하는것 외 다른 것도 다들 설치하게 된다.

maven이 네트워크에서 다운로드 후 프로젝트에 주입

3)

JRE버전을 바꾸고 싶다

두가지 방법이 있다

 

1. 라이브러리 추가했는데 없다고 하는경우 직접 디렉토리 폴더가서 삭제하고 나서, 다시 이클립스 실행을 하면 다시 라이브러리가 설치되면서 해결이 된다

2. pom.xml 에 JRE version을 수정한다. ->  Maven -> projectupdate

 

4) 라이브러리로 톰캣까지 추가하면 [자바 + 톰캣 + 메이븐] 라이브러리 3가지를 쓴다

그렇게 되면 jsp 파일을 실행하면 다운로드가 아닌 브라우저에서 실행이 가능하다

라이브러리 안frontController(DispatcherServlet)가 다 있다.

 

SpringMVC 이런경우 3가지가 필요하다

1. 메모리상에 없는 애를 객체로 만들어서 올라오게 해야한다

2. 기존에 내가 시키려면, 내가 만든 컨트롤러가 어디에 있다라고 할지(어떤 url, 컨트롤러 매핑정보)를 심어야한다

3. 라이브러리들은다 설정이 필요하다. 그러다보니 기업어플만들 때 힘든점이 설정이 힘들다

 

그래서 등장한게 뭐라면 Spring Boot가 나왔다

 

 

2. Spring Boot

(1) 들어가며

각자 위 3가지 필요(WAS / Servlet,jsp / Spring DI,Transaction,MVC) 를 모두 해야한다

 

3가지 숨겨줄게 너는 응용프로그램만 만드는데 초점맞춰!

다시 새로시작하다는 취지로 Boot가 나왔어!

톰캣 등다 임베드 다 되어있음 / WAR파일 만든다 생각필요 없이 jar 만든다고 생각하면돼 (스프링은 서블릿(WAS)이 외장이 아닌 내장하기 때문) 등...

핵심 특징 3가지

(2) Spring Framework 를 이용한 웹 개발

라이브러리들은 라이브러리 직접구하고 + 설정하고 쓰는 내내 다 해야한다...

좌 우 중 하나를 선택하면 돼! 우측의 부트를 얹으면 내가 구성하거나, 라이브러리 구하거나 등 할 필요가 없어

 

(3) 스프링 설치

스프링 설치된 이클립스가 유용하다

내일부터는 스프링 부트로 할 것이고

이클립스에 스프링을 얹인것을 설치후 사용할 것임

 

 

 


1. 보충

 

(1) 메이븐을 왜 쓰는지? : ( https://codevang.tistory.com/239 )

: 메이븐과 스프링과의 관계

 

 

 

 

(2) pom.mxl (Project Object Model : 프로젝트 객체 모델) 과 그 구조

(https://sjh836.tistory.com/131 )

What (정의) : 의존성관리도구로서 메이븐을 사용하기 위한것으로 프로젝트 관리도구이다.

Why (존재이유) : 프로젝트를 관리하기 위해서인데, 선언적방법 및 프로젝트 구조를 정의함으로 이용한다.

How (방법) :

 

엘리먼트

  • <groupId> : 프로젝트의 패키지 명칭
  • <artifactId> : artifact 이름, groupId 내에서 유일해야 한다.
  • <version> : artifact 의 현재버전 ex. 1.0-SNAPSHOT
  • <name> : 어플리케이션 명칭
  • <packaging> : 패키징 유형(jar, war 등)
  • <distributionManagement> : artifact가 배포될 저장소 정보와 설정
  • <parent> : 프로젝트의 계층 정보
  • <dependencyManagement> : 의존성 처리에 대한 기본 설정 영역
  • <dependencies> : 의존성 정의 영역
  • <repositories> : 이거 안쓰면 공식 maven 저장소를 활용하지만, 사용하면 거기 저장소를 사용
  • <build> : 빌드에 사용할 플러그인 목록을 나열
  • <reporting> : 리포팅에 사용할 플러그인 목록을 나열
  • <properties> : 보기좋게 관리가능, 보통 버전에 많이 쓴다.

 

2. 회고 

1) 메이븐을 왜쓰는지 그리고 이게 스프링부트와 어떤 맥락에서 이용이 되는지 직접적으로 이해가 어렵다.

'배움 __IL > TIL 1기' 카테고리의 다른 글

TIL : 58번째- 230224 [2-3-금]  (0) 2023.02.24
TIL : 57번째- 230223 [2-3-목]  (0) 2023.02.23
TIL : 55번째- 230221 [2-3-화]  (0) 2023.02.21
TIL : 54번째- 230220 [2-3-월]  (0) 2023.02.20
TIL : 53번째- 230217 [2-2-금]  (0) 2023.02.17