스프링 부트로 실행된 파일을 이해하기 위해서 메이븐을 빼놓을 수가 없습니다.
이 부분에 대해서 조금이라도 지식을 쌓고 넘어가봅시다.
소프트웨어 프로젝트 관리 및 이해도구라고 공홈에서 정의하네요.
pom(Project Object Model)을 기반으로 중앙 정보로부터 프로젝트의 빌드, 보고 및 문서를 관리합니다.
설치와 환경설정은 이전 포스트를 참고해주세요.
빌드 순서를 라이프 사이클이라고 합니다.
크게 순서는 compile => test => package
메이븐 자체의 설정 파일
해당 프로젝트에 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주소>
로 실행하면 똑같이 웹애플리케이션이 동작.
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>