Maven Configuration(pom.xml)

자신의 프로젝트에 대한 고유의 좌표 설정

groupId

  • 자신의 프로젝트를 고유하게 식별하게 해주는 것으로, 최소한 내가 컨트롤하는 domatin name이어야한다.
  • package 명명 규칙을 따른다.
  • 하위 그룹은 얼마든지 추가할 수 있다.

artifactId

  • 제품의 이름으로, 버전 정보를 생략한 jar 파일의 이름이다.
  • 프로젝트 이름과 동일하게 설정한다.
  • 소문자로만 작성하며 특수문자는 사용하지 않는다.

Version

  • SNAPSHOT: 개발용, RELSEASE : 배포용
  • 숫자와 점을 사용하여 버전 형태를 표현한다.(1.0, 1.1, 1.1..)

 

Maven 장점

  • pom.xml에 명시한 lib 자동으로 다운
  • build process 자동화
    • compile->test->package(.war)->install->deploy

Web Deployment Descriptor(web.xml)

  • 개념
    • web application의 설정을 위한 deployment descriptor
    • SUN에서 정해놓은 규칙에 맞게 작성해야 하며 모든 WAS에 대하여 작성 방법이 동일하다.
  • 역할
    • Deploy 할 때 Servlet의 정보를 설정해준다.
    • 브라우저가 Java Servlet에 접근하기 위해서는 WAS(ex. tomcat)에 필요한 정보를 알려줘야 해당하는 Servelet을 호출할 수 있다.
      • 정보1) 배포할 Servlet이 무엇인지
      • 정보2) 해당 Servlet이 어떤 URL에 매핑되는지
    • 구체적인 설정 내용
      • DispatcherServlet
      • ContextLoaderListener
      • Filter : encodingFilter, springSecurityFilterChain
  • Dependency 목록

    • Spring-webmvc
      : Spring mvc 프로젝트를 하기위해선 추가해야할 기본적인 dependency이다.

    • spring-tx
      : spring transaction을 사용하기위한 dependency이다.

    • spring-orm
      : jpa를 사용하고자 할때 추가해야하는 dependency이다.

    • hibernate-core
      : jpa를 사용하고 hibernate를 사용하고자 할때 추가하는 dependency이다.

    • hibernate-c3p0 
      : db connection pool로 c3p0를 사용하고자 할때 사용하는 dependency이다.

    • c3p0
      : dpcp 라이브러리인 c3p0 dependency이다.

    • hibernare-validator
      : entity에서 데이터의 유효성 검증을 하기 위한 dependency이다.

    • javax.servlet.jsp.jstl-api
      : front end 단에서 jstl을 사용하기 위한 dependency이다.

    • standard
      : taglib를 사용하기 위한 dependency이다.

    • javax.servlet-api
      : servlet dependency 이다.

    • javax.servlet.jsp-api
      : JSP dependency 이다.

    • com.fasterxml.jackson.core
      : Json converter 로 RESTful api를 작성할때 json데이터를 변환하고 결과를 json 데이터로 전송해주기 위해 필요한 dependency이다. 

    • mysql
      : database로 mysql을 사용하기 위한 connector-J dependency 이다.

    • jUnit
      : 당장은 사용안하지만 후에 unit 테스트를 하기위한 dependency이다.

<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>com.pang</groupId>
    <artifactId>pangs-spring-mvc</artifactId>
    <version>1.0.0</version>
    <packaging>war</packaging>

    <properties>
        <springframework.version>5.0.6.RELEASE</springframework.version>
        <hibernate.version>5.2.16.Final</hibernate.version>
        <hibernate.validator>5.4.1.Final</hibernate.validator>
        <c3po.version>0.9.5.2</c3po.version>
        <jstl.version>1.2.1</jstl.version>
        <tld.version>1.1.2</tld.version>
        <servlets.version>3.1.0</servlets.version>
        <jsp.version>2.3.1</jsp.version>
        <mysql.connector.version>8.0.13</mysql.connector.version>
        <jackson.databind.version>2.9.5</jackson.databind.version>
        <junit.version>3.8.1</junit.version>

        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

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

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

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

        <!-- Hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>${hibernate.version}</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-c3p0</artifactId>
            <version>${hibernate.version}</version>
        </dependency>

        <!-- C3PO -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>${c3po.version}</version>
        </dependency>

        <!-- Hibernate Validator -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>${hibernate.validator}</version>
        </dependency>

        <!-- JSTL Dependency -->
        <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>javax.servlet.jsp.jstl-api</artifactId>
            <version>${jstl.version}</version>
        </dependency>

        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>${tld.version}</version>
        </dependency>

        <!-- Servlet Dependency -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>${servlets.version}</version>
            <scope>provided</scope>
        </dependency>

        <!-- JSP Dependency -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>${jsp.version}</version>
            <scope>provided</scope>
        </dependency>

        <!-- MySQL -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.connector.version}</version>
        </dependency>

        <!-- Add Jackson for JSON converters -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.databind.version}</version>
        </dependency>

        <!-- junit Dependency -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>

        <sourceDirectory>src/main/java</sourceDirectory>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
        <plugins>
            <!-- Builds a Web Application Archive (WAR) file from the project output
                and its dependencies. -->
            <plugin>
                <!-- Add Maven coordinates (GAV) for: maven-war-plugin -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.0</version>
            </plugin>

        </plugins>
    </build>
</project>

+ Recent posts