본문 바로가기

Backend/spring

메이븐으로 스프링 시작하기

메이븐 설치

터미널에서 프로그램을 바로 실행하려면 PATH환경 변수를 설정 해 주어야 하지만,

homebrew를 통해 maven을 설치해서 이에 대한 설정을 생략한다.

https://mkyong.com/maven/install-maven-on-mac-osx/

메이븐 프로젝트 생성

IntelliJ

메이븐과 그레이들 모두 동일한 폴더 구조를 사용한다.

처음 project wizard에서 Maven을 선택해 메이븐 프로젝트를 생성한다.

자동으로 기본 파일 구조가 생성된다.

다음으로 메이븐 프로젝트 설정 파일을 작성한다.

 

메이븐 프로젝트의 핵심은 pom.xml 파일이다. 모든 메이븐 프로젝트는 프로젝트의 루트 폴더에 pom.xml 파일을 갖는다. pom.xml은 메이븐 프로젝트에 대한 설정 정보를 관리하는 파일로서 프로젝트에서 필요로 하는 의존 모듈이나 플러그인 등에 대한 설정을 담는다.

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>

    <groupId>sp5</groupId>
    <artifactId>sp5-chap02</artifactId>
    <version>0.0.1-SNAPSHOOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.2.RELEASE</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>utf-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

해당 코드를 작성한 시점에는 IDE에 지정한 dependency와 plugin을 찾을 수 없다는 에러가 떴다.

메이븐 의존 설정

pom.xml 파일에 의존과 플러그인 두 가지 정보를 설정했다.

메이븐은 한 개의 모듈을 아티팩트라는 단위로 관리한다. 위에서 spring-context라는 식별자를 가진 5.0.2.RELEASE 버전의 아티팩트에 대한 의존을 추가한 것이다. 여기서 의존을 추가한다는 것은일반적인 자바 어플리케이션에서 클래스 패스에 spring-context 모듈을 추가한다는 것을 뜻한다. 각 아티팩트의 완전한 이름은 "아티팩트이름-버전.jar"이다.

메이븐 리포지토리

메이븐은 코드를 컴파일하거나 실행할 때 <dependency>로 설정한 아티팩트 파일을 사용한다. 아티팩트 파일은 다음 과정을 거쳐 구한다.

  • 메이븐 로컬 리포지토리에서 그룹ID/아티팩트ID/버전 폴더에 아티팩트ID-버전.jar 형식의 이름을 갖는 파일이 있는지 검사한다. 있으면 해당 파일을 사용한다.
  • 로컬 리포지토리에 파일이 없으면 메이븐 원격 중앙 리포지토리로부터 해당 파일을 다운로드하여 로컬 리포지토리에 복사한 뒤 그 파일을 사용한다.
mvn compile

위 명령어를 통해 원격 리포지토리에서 필요한 파일을 다운로드 한다.

의존전이: 하나의 모듈은 또 다른 모듈에 대한 의존성을 가지고 있다. 따라서 하나의 모듈을 의존하기 위해서는 그 모듈이 의존하는 다른 모듈 역시 의존 목록에 추가해야한다. 이를 의존전이라고 한다.

 

메이븐 기존 폴더 구조

  • /src/main/java: 자바 소스 코드가 위치한다.
  • /src/main/resource: XML이나 프로퍼티 파일과 같이 자바 소스 이외의 자원을 관리한다.
  • /src/main/webapp: 웹 어플리케이션을 개발할때 기준 폴더로 사용한다

그레이들 프로젝트 생성

그레이들 프로젝트 생성은 메이븐과 크게 다르지 않다. 차이점이라면 pom.xml 대신 build.gradle을 이용한다는 것뿐이다.

앞서 말했듯이 폴더 구조도 동일하다.

 

build.gradle

plugins {
    id 'java'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8
compileJava.options.encoding = "UTF-8"

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.springframework:spring-context:5.0.2.RELEASE'
}

test wrapper(type: Wrapper) {
    gradleVersion = '4.4'
}
gradle wrapper

위 명령어를 실행해서 래퍼 파일을 생성할 수 있다. 결과물론 gradlew.bat, gradlew파일, gradle 폴더가 생성된다.

이 래퍼 파일을 사용하면 그레이들 설치 없이 그레이들 명령어를 실행할 수 있다.

gradllew compileJava

'Backend > spring' 카테고리의 다른 글