IntelliJ에서 Maven을 활용하여 Spring 개발환경 구축하기

12 Mar 2019 - breadkey

Maven이란?

아파치 재단에서 개발하는 Java용 프로젝트 관리 도구이다. 팀의 의사소통 기능도 제공하며 빌드에 관한 기능들을 제공하여 빌드 도구도 된다. 또한 라이브러리 관리도 pom.xml 파일을 통해 할 수 있다.


pom.xml

참고문서
POM은 Project Object Model의 약자이다. 구성 파일뿐 아니라 관련된 개발자와 역할, 조직 및 라이센스, 프로젝트가있는 위치의 URL, 프로젝트의 종속성 및 다른 모든 작은 부분까지 포함한다.

<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>
 
  <!-- The Basics -->
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>...</version>
  <packaging>...</packaging>
  <dependencies>...</dependencies>
  <parent>...</parent>
  <dependencyManagement>...</dependencyManagement>
  <modules>...</modules>
  <properties>...</properties>
 
  <!-- 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>

The Basics

groupId

프로젝트나 기관등에서 고유한 부분이다. 예를들어 Maven artifcats의 모든 코어는 groundId org.apache.maven 아래에 있다.

artifactId

대부분 프로젝트의 이름을 나타낸다. groupId와 함께한다. 만약 groubId가 org.codehaus.mojo이고 artifactId가 my-project라면 해당 프로젝트는 …/org/codehaus/mojo/my-project에 위치한다.

version

코드가 변하면 버전도 변하는데 이 버전에 대한 정보는 여기에 적는다.

packaging

패키징을 무엇으로 할지 기술한다. 기본값(적지 않았을 때)은 jar이다.

dependencies

대부분의 프로젝트는 다른 사람에게 의존하여 빌드되고 실행되는데, Maven을 통해 의존 목록을 관리할 수 있다. Maven은 dependency에 기술된 부분을 다운로드하고 링크시킨다.


pom.xml에 스프링 개발환경 기술하기

먼저 인텔리제이에서 새로운 프로젝트를 Maven으로 생성한다.
 
Spring Data JPA을 활용하여 DAO를 자동으로 생성하고자 하는데, 이에 필요한 의존성은 다음과 같다.

    <dependencies>
        <!-- Spring -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>1.8.2.RELEASE</version>
        </dependency>

        <!-- Hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.3.11.Final</version>
        </dependency>

        <!-- DB -->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>org.hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <version>2.3.3</version>
        </dependency>

        <!-- Logging -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.5</version>
        </dependency>

        <!-- Testing -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>

    </dependencies>

스프링 제품들의 version은 ${org.springframework-version}이라고 돼있는데, 이는 properties에 정의한 값을 불러오는 것이다. properties에는 스프링 버전을 다음과 같이 정의했다.

    <properties>
        <org.springframework-version>4.1.6.RELEASE</org.springframework-version>
    </properties>

빌드 환경을 정의한다

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
tag: java intellij maven spring

Related Posts