IntelliJ Community

IntelliJ WebApp Maven Project 생성 - WebApp, maven-archetype-webapp, URI is not registered

carrotweb 2023. 5. 29. 23:20
728x90
반응형

WebApp Maven Project(웹앱 메이븐 프로젝트) 생성하기

 

1. "New Project"를 클릭합니다.

 

2. New Project 대화상자에서 Generators에 있는 Maven Archetype를 선택합니다.

 

저는 프로젝트 이름(Name)을  "test2"로 입력하였습니다.

프로젝트 경로(Location)는 "C:\workspaces\studyj"로 하였습니다. (Git 연동은 다음에 하도록 하겠습니다.)

JDK는 이전에 설치한 "Eclipse Temurin Version 1.8.0_372"를 선택하였습니다. ("Eclipse Temurin Version 1.8.0_372" 버전 JDK 설치는 여기(https://carrotweb.tistory.com/280)를 참고하시기 바랍니다.)

 

메이븐 카탈로그(Catalog)는 "Internal"를 선택하였습니다.

 

메이븐 카탈로그(Catalog)는 다음과 같습니다.

  • Internal: 메이븐 배포판에 있는 시스템 카탈로그
  • Default Local: 나의 시스템의 .m2 디렉터리에 있는 카탈로그
  • Maven Central: 메이븐 중앙 저장소에 있는 카탈로그

 

메이븐 아키타입(Archetype)은 "org.apache.maven.archetypes:maven-archetype-webapp"를 선택하였습니다.

 

메이븐 아키타입(Archetype)란, 사전적 의미로 "원형"입니다. 이 "원형"은 복사본을 만들 수 있는 "원본"을 뜻합니다.

즉, 메이븐 아키타입(Archetype)을 사용하면 이미 만들어진 구성으로 동일하게 프로젝트를 만들 수 있어 편리합니다.

(메이븐 아키타입(Archetype)은 메이븐 카탈로그(Catalog)에 따라 달라집니다.)

 

메이븐 아키타입 버전(Version)은 "1.0"를 선택하였습니다.

 

"Advanced Setting"를 클릭하여 Artifact(아티팩트)를 설정하겠습니다.

"GroupId"는 "com.home.study"으로 입력하였습니다.

"ArtifactId"는 기본적으로 프로젝트 이름(Name)으로 되어 있습니다. 그대로 사용하겠습니다.

"Version"은 기본값인 "1.0-SNAPSHOT"으로 하겠습니다.

"Create" 버튼을 누릅니다.

 

3. intelliJ IDE에 Maven 프로젝트로 WebApp을 만들 수 있는 샘플 코드와 함께 생성됩니다.

프로젝트가 생성되자마자 maven-archetype-plugin-3.2.1을 다운로드하고 plugin과 관련된 모듈들을 다운로드합니다.

 

pom.xml를 보면 New Project 대화상자에서 설정한 정보들로 설정된 것을 확인할 수 있습니다.

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.home.study</groupId>
  <artifactId>test2</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>test2 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>test2</finalName>
  </build>
</project>

<packaging>는 기본값으로 "war"로 되어 있습니다.

 

Package는 프로젝트의 패키징 방식으로 다음과 같습니다.

  • jar(Java Archive)는 여러 개의 자바 클래스나 리소스, 메타데이터 등을 하나의 파일로 압축합니다.
  • pom(Project Object Model)는 프로젝트의 라이브러리 의존성(dependencies), 모듈(modules), 정보(properties), 저장소(repositories), 빌드(build) 등을 관리하는 관리 파일입니다.
  • war(Web application ARchive)는 자바 클래스, 서버 페이지(jsp), XML, HTML, 스크립트, 이미지 등 웹 프로젝트의 모든 파일을 하나의 파일로 압축합니다.

 

<dependencies>를 보면 "junit"이 기본적으로 추가되어 있습니다.

 

JUnit은 자바 프로젝트에서 생성되는 클래스의 메서드를 테스트하는 단위 테스트 도구입니다. 이름 그래로 "Java Unit Test"입니다.

 

 

web.xml를 열어보면 "URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)" URI가 등록되어 있지 않다는 에러가 있습니다.

 

이 URI에 마우스를 클릭하고 조금 있으면 붉은색 전구 아이콘이 나타납니다.

또는 붉은색 전구 아이콘이 나타날 때 마우스로 조금 이동하면 툴팁이 나타납니다.

이 아이콘을 클릭하면 에러를 처리할 방법이 나타납니다.

  • Fetch external resource (외부 리소스 가져오기)
  • Ignore external resource (외부 리소스 무시)
  • Manually set up external resource (외부 리소스 수동 설정)

 

여기서는 "Fetch external resource"를 클릭합니다. 그러면 URI가 등록되고 에러가 없어집니다.

 

web.xml에는 간단히 웹앱의 이름으로 "Archetype Created Web Application - 아키타입으로 만들어진 웹 애플리케이션"으로 되어 있습니다. 원하시는 이름으로 변경하면 됩니다.

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
</web-app>

 

index.jsp 파일을 보면 간단하게 "Hello World!"가 출력되게 되어 있습니다.

<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

 

pom.xml를 열어 <dependencies>에 javax.servlet를 추가합니다.

<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<version>3.1.0</version>
	<scope>provided</scope>
</dependency>

오른쪽 상단에 있는 "Load Maven Changes" 버튼을 누르면 Maven이 업데이트됩니다.

Maven이 업데이트되면서 External Libraries(외부 라이브러리)에 "javax.servlet:javax.servlet-api:3.1.0"이 추가가 됩니다.

 

이제 WebApp를 Maven기반으로 만들 수 있게 되었습니다.

 

이어서 메이븐 프로젝트을 위한 폴더 구조에 대해 알아보겠습니다. 

728x90
반응형