Maven

김수정·2020년 7월 2일
0

스프링/스프링부트

목록 보기
3/11

스프링 부트로 실행된 파일을 이해하기 위해서 메이븐을 빼놓을 수가 없습니다.
이 부분에 대해서 조금이라도 지식을 쌓고 넘어가봅시다.

Maven이란?

소프트웨어 프로젝트 관리 및 이해도구라고 공홈에서 정의하네요.
pom(Project Object Model)을 기반으로 중앙 정보로부터 프로젝트의 빌드, 보고 및 문서를 관리합니다.
설치와 환경설정은 이전 포스트를 참고해주세요.

Maven LifeCycle

빌드 순서를 라이프 사이클이라고 합니다.
크게 순서는 compile => test => package

  • clean: 빌드 시 생성되었던 target 파일 삭제
  • validate: 프로젝트가 올바른지 확인하고 필요한 모든 정보를 사용할 수 있는지 확인
  • compile: 프로젝트의 소스코드를 컴파일. src/java 아래의 모든 자바 소스를 컴파일해서 target/classes로 복사.
  • test: 단위 테스트
  • package: 실제 컴파일된 소스와 리소스를 jar, war등의 패키지로 만듦
  • verify: 통합 테스트 결과에 대한 검사를 실행하여 품질 기준을 충족하는지 확인
  • install: 패키지를 로컬 저장소에 설치
  • site: 프로젝트 문서와 사이트 작성, 생성
  • deploy: 만들어진 package를 원격 저장소에 release

설정파일

1) settings.xml

메이븐 자체의 설정 파일

2) pom.xml

해당 프로젝트에 import되는 jar파일 정보 및 버전 정보를 담고 있다.
메이븐 프로젝트의 XML적 표현입니다.

공홈에서 가져온 코드

<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion> <!-- pom 문서 버전 -->
 
  <!-- The Basics -->
  <groupId>...</groupId> <!-- 식별자. 패키지주소 표시 -->
  <artifactId>...</artifactId> <!-- 빌드 시 파일 이름 -->
  <version>...</version> <!-- 버전 -->
  <packaging>...</packaging> <!-- jar/war 무엇으로 압축할 것인지. -->
  <dependencies>...</dependencies> <!-- 의존성 관리하는 곳. 라이브러리를 불러온다. -->
  <parent>...</parent> <!-- 상속받아올 부모 지정할 때 사용 -->
  <dependencyManagement>...</dependencyManagement>
  <modules>...</modules>
  <properties>...</properties> <!-- 자주 사용되는 정보를 변수처럼 만들어서 src/main/resources/property 파일에서 사용가능 -->
 
  <!-- Build Settings -->
  <build>...</build> <!-- 빌드에 사용할 플러그인 목록 -->
  <reporting>...</reporting>
 
  <!-- More Project Information -->
  <name>...</name> <!-- 프로젝트 이름 -->
  <description>...</description> <!-- 프로젝트 설명 -->
  <url>...</url> <!-- 프로젝트 참고 사이트 -->
  <inceptionYear>...</inceptionYear>
  <licenses>...</licenses>
  <organization>...</organization>
  <developers>...</developers>
  <contributors>...</contributors>
 
  <!-- Environment Settings -->
  <issueManagement>...</issueManagement>
  <ciManagement>...</ciManagement>
  <mailingLists>...</mailingLists>
  <scm>...</scm>
  <prerequisites>...</prerequisites>
  <repositories>...</repositories>
  <pluginRepositories>...</pluginRepositories>
  <distributionManagement>...</distributionManagement>
  <profiles>...</profiles>
</project>

명령어

mvn package
jar, war등으로 압축함.
java -jar <jar주소>로 실행하면 똑같이 웹애플리케이션이 동작.

maven으로 의존성 관리

pom.xml을 사용합니다.
설치할 수 있는 패키지 검색은 요기서 합니다. 자바스크립트의 npm같은 느낌이네요.

스프링부트에서 버전관리 해주는 패키지인 경우
특정 버전을 굳이 꼭 원하는게 아니라면 안쓰셔도 됩니다. 알아서 관리해주니까요.
관리해주는 패키지인지 아는 방법은 에디터 옆에 씨디모양의 이정표가 생깁니다.

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

스프링부트에서 버전관리 안해주는 패키지인 경우
버전관리를 안해주므로 버전명을 명시해주셔야 합니다. 혹여 운으로 동작하더라도 나중에 무슨 문제가 생길지 모릅니다~

<dependency>
  <groupId>org.modelmapper</groupId>
  <artifactId>modelmapper</artifactId>
  <version>2.3.8</version>
</dependency>

스프링부트에서 이미 설치한 패키지의 버전을 바꾸고 싶은 경우
패키지 버전 설치되어 있는 부분 찾아서 properties에서 덮어써줍니다.

<properties>
  <java.version>1.8</java.version>
</properties>

참고
메이븐 공홈 pom설명
빌드부터 메이븐까지

profile
정리하는 개발자

0개의 댓글