아키타입(일종의 프로젝트 템플릿)을 설정해주는 빌드 툴
라이브러리 파일 추가 없이 dependency만 추가해주면 됨
![]()
- phase에 plugin을 연결하고 plugin의 goal이 해당 단계의 기능을 수행함
ex) compile: org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
: 'compile' 단계를 'maven-compiler-plugin 3.1'의 'compile' goal이 처리함
mvn archetype:generate // 아키타입을 생성 -DgroupID=com.newlecture // 회사나 팀의 도메인을 거꾸로 적음 -DartifactId=javaprj // 프로젝트의 이름 -DarchetypeArtifactId=maven-archetype=quickstart // quickstart 아키타입 사용 // pom.xml 파일이 있는 위치에서 실행 mvn compile // compile단계 까지 진행 mvn test // test단계 까지 진행 mvn package // package 단계까지 진행
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>