Maven

csct3456·2022년 4월 4일
0

Maven

아키타입(일종의 프로젝트 템플릿)을 설정해주는 빌드 툴

라이브러리 파일 추가 없이 dependency만 추가해주면 됨

Life Cycle Phases

  • phase에 plugin을 연결하고 plugin의 goal이 해당 단계의 기능을 수행함
    ex) compile: org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
    : 'compile' 단계를 'maven-compiler-plugin 3.1'의 'compile' goal이 처리함

with CMD

mvn archetype:generate		// 아키타입을 생성
-DgroupID=com.newlecture	// 회사나 팀의 도메인을 거꾸로 적음
-DartifactId=javaprj		// 프로젝트의 이름
-DarchetypeArtifactId=maven-archetype=quickstart	// quickstart 아키타입 사용


// pom.xml 파일이 있는 위치에서 실행
mvn compile 	// compile단계 까지 진행
mvn test 		// test단계 까지 진행
mvn package 	// package 단계까지 진행

with Eclipse

Archetype : maven-archetype-webapp

구조

추가 설정

1. JDK 버전 설정

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

2. Servlet 라이브러리 추가

// pom.xml
<dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>provided</scope>
</dependency>
scope는 다음과 같은 4가지가 있다.
compile : 컴파일 할 때 필요. 테스트 및 런타임에도 클래스 패스에 포함됩니다. scope 을 설정하지 않는 경우 기본값입니다.
runtime : 런타임에 필요. JDBC 드라이버 등이 예가 됩니다. 컴파일 시에는 필요하지 않지만, 실행 시에 필요한 경우입니다.
provided : 컴파일 시에 필요하지만, 실제 런타임 때에는 컨테이너 같은 것에서 제공되는 모듈. servlet, jsp api 등이 이에 해당. 배포 시 제외됩니다. 
test : 테스트 코드를 컴파일 할 때 필요. 테스트 시 클래스 패스에 포함되며, 배포 시 제외됩니다.

3. EL 설정

webapp archetype은 다이나믹 웹 모듈 2.3을 사용하는데 이는 EL을 지원하지 않는다.
다음의 파일들을 수정하여 버전을 3.1로 변경해 준다.

// web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
  <display-name>Archetype Created Web Application</display-name>
</web-app>
// .settings/org.eclipse.wst.common.project.facet.core.xml
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <fixed facet="wst.jsdt.web"/>
  <installed facet="jst.web" version="3.1"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
  <installed facet="java" version="1.8"/>
</faceted-project>

4. JSTL 라이브러리 추가

// pom.xml
<dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
          <version>1.2</version>
</dependency>

0개의 댓글

관련 채용 정보