Wanna be Brilliant Full-Stack Developer

SpringBoot Blog 만들기 Maven이란? 본문

Back-End/블로그 만들기 With SpringBoot

SpringBoot Blog 만들기 Maven이란?

Flashpacker 2023. 2. 13. 02:10


Maven이란 무엇인가? 

우리가 어떤 프로젝트를 하나 하려고 하면!
프로젝트 이름이 만약에 blog고

우리가 필요한 라이브러리가 Ojdbc이면 Oracle 드라이브에 사용하기 위해서

첫번쨰로 무엇을 해야하는가?

오라클이라는 사이트가 있다. 오라클 사이트에서 Ojdbc를 다운로드 받는다.

애를 다운을 받고나서 해당 파일을 내 프로젝트에 lib라는 폴더를 만들고 복사를 한다.

카피 후에 내 프로젝트가 애를  인식 할 수 있도록 빌드를 한다. 

그리고 과정이 내가 어떤 라이브러리가 필요하면 다운로드 받을수 있는 사이트에 들어가서

다운받은 파일을 카피하여 내 프로젝트 폴더 내부에 빌드를 해야한다

이렇게 해야지 내 프로젝트에서 어떤 특정 java 파일에서
Ojdbc가 가지고 있는 특정 클래스를 사용하기 위해서 임포트해서 사용할 수 있다. 

그럼 만약에 프로젝트가 하나 더 있다. 

이 프로젝트는 만약에 인스타 프로젝트라고 하면 여기에서도 Lib폴더를 하나 만들어서 

ojdbc를 똑같이 카피해서 집어 넣는다. 그리고 빌드 한다

 

lib폴더에 카피가 되어있기 떄문에 ojdbc가 2개가 된것이다.

각 프로젝트에 다 가지고 있기 때문이다.

lib라는 폴더를 만들지 않고 카피 하지 않고!

그냥 어떤 폴더 하나를 C 드라이브 lib라는 폴더를 만들어두고 카피를 그곳에 한다.

그리고 나서 빌드를 1번 프로젝트 에 연결을 하여 빌드를 하게 되고

하나의 폴더를 두군데에서 사용할 수 있기 떄문에 조금더 편리하다.

프로젝트 외부에 두면 편리하다.

내가 만약에 이게 개발 환경이라고 치면 내 컴퓨터라고하면 이걸 어딘가에 내포를 해야 된다면

만약에 리눅스라는 환경에 인스타 프로젝트를 들고 왔으면

 이 프로젝트에는 라이브러리가 없다.

왜냐하면 프로젝트 내부에 들고 있지 않기 떄문에 아까 전처럼 

아까전에는 들고 있었기 떄문에 배포하면 끝이 였는데 이제는 배포하고나서 특정 폴더를 

하나를 만들어서 해야한다.

리눅스에는

이렇게 빌드를 해야되기 떄문에 굉장히 복잡하다.

 

외부에 두게 되면 장점은 파일 하나로 양쪽에서 사용할 수 있다는 것이고

단점은 배포 하게 되면 또 연결을 해야 한다는 것이다.

또 다른 단점은 내가 만약에 Mysql 라이브러리를 받고 싶으면 JSoup라는 라이브러리
(Java로 HTML파싱할 수 있는 라이브러리) 이 사이트에서 또 다운로드를 받아야하고
또 프로젝트 내부에 옮기는거나
외부 폴더에 두고 필요할떄 사용하는 2가지의 방법이 있다.

 

근데 내가 필요한 라이브러리를 필요한 사이트에서 다운로드를 받는것이 굉장히 불편하다.

왜냐하면 오라클 사이트 , 여기 저기 사이트에서 다운로드를 받기 떄문이다.

 

그래서 효율적인 방법이 있다.

중앙 저장소를 하나 만들자!

이 저장소에 Jsoup라는 라이브러리도 넣고, Lombok이라는 라이브러리도 넣고 ,
ojdbc라는 라이브러리도 넣어서

gson이라는 라이브러리도 넣을 수가 있는데
원래는 각각 라이브러리 각자 회사에서 만들었기 떄문에

사이트가 다른 사이트에서 가지고 있는데

우리가 원래 어떤 프로젝트가 있으면 쓰고 싶으면 각각 사이트에 들어가서 다운로드를 받아야했는데.

이거를 이렇게 하지 않고 중앙저장소에 넣는것이다.

그리고 애는 어쩌면 파일 서버가 되는것이다.

파일을 관리하기 떄문이다. 그리고 우리는 어디에만 접근하면 되는가?

중앙저장소에만 접근하여 라이브러리를 다운 받으면 된다.

근데 다운을 받을떄 어떻게 받는가? 

문서 pom.xml이라는 파일을 만들어서 여기에다가 내가 받아야될 라이브러리를 기술해놓는다.

이 라이브러리가 필요해 1번 gSon이 2번 Ojdbc가 필요해! 
이렇게 기술만 해놓으면

프로젝트가 시작될떄 pom.xml을 Maven이라는 프로젝트 관리도구가 읽어서 

저런 내용이 적혀져 있는것을 보고 중앙 저장소에서 필요한것들을 다운로드를 받는다.

 내 프로젝트에 받는것이 아니라 .m2라는 폴더가 있다.

이 폴더를 만들고 .이 옆에 붙어 있는것은 윈도우에서는 숨김폴더이다.

Maven이라는 프로젝트 관리도구를 통해 pom.xml에 적혀있는 필요한 라이브러리를 m2 레파지토리 파일에 다 다운받고 빌드한다

여기 레파지토리라는 폴더를 만들고 그 내부에다가 다 다운받아준다.

그러면 이제 다 다운받고 자동으로 빌드까지 해준다.

한마디로 우리가 프로젝트에서 라이브러리를 관리 하기 위해서
pom.xml에 필요한것들을 적어놓기만 하면 된다.

만약에 리눅스에 배포한다면? 애만 배포 하면된다.

pom.xml은 똑같이 있을거니까 자동으로 Maven도 설치를 해놓고
리눅스에 내가 배포해야할 OS환경에 
서버에 그대로 집어넣고
Maven 설치 해놓으면 라이브러리 가 자동으로 설치가 되기떄문에 끝난다!