Maven은 프로젝트의 빌드, 의존성 관리, 문서화 등을 자동화해주는 강력한 빌드 도구입니다. IDE(통합 개발 환경)에 의존하지 않고 커맨드 라인 인터페이스(CLI)를 통해 Maven 프로젝트를 생성하고 빌드하는 방법을 살펴보겠습니다.
1. Maven Java 기본 프로젝트 생성
터미널 또는 명령 프롬프트를 열고 다음 명령어를 실행하여 기본 Java 프로젝트를 생성할 수 있습니다.
mvn archetype:generate \
-DgroupId=com.example.cli \
-DartifactId=java-basic-app \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false
매개변수 설명:
mvn: Maven 실행을 위한 기본 명령어입니다.archetype:generate: 프로젝트 스켈레톤(템플릿)을 생성하는 플러그인 목표입니다.-DgroupId: 프로젝트의 고유 식별자로, 일반적으로 도메인 이름의 역순을 사용합니다.-DartifactId: 프로젝트의 이름이자 생성될 디렉토리 및 아티팩트의 기본 이름입니다.-DarchetypeArtifactId: 사용할 템플릿의 이름입니다. 여기서는 표준 Java 프로젝트를 위한maven-archetype-quickstart를 사용합니다.-DinteractiveMode=false: 대화형 모드를 비활성화하여 기본값으로 즉시 프로젝트를 생성합니다.
참고: Maven 3.0 이상 버전에서는 archetype:create 명령어가 더 이상 지원되지 않습니다. 해당 명령어를 사용하면 빌드 오류가 발생하므로 반드시 archetype:generate를 사용해야 합니다.
프로젝트가 성공적으로 생성되면 콘솔에 다음과 유사한 로그가 출력됩니다.
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO] >>> maven-archetype-plugin:3.2.1:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO] <<< maven-archetype-plugin:3.2.1:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO] --- maven-archetype-plugin:3.2.1:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Batch mode
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.example.cli
[INFO] Parameter: artifactId, Value: java-basic-app
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.example.cli
[INFO] project created from Archetype in dir: /path/to/workspace/java-basic-app
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
2. Maven 빌드 수명 주기 명령어
생성된 프로젝트 디렉토리로 이동한 후, 다음 명령어들을 사용하여 프로젝트를 빌드하고 관리할 수 있습니다.
mvn clean: 이전 빌드 결과물(target디렉토리)을 삭제하여 환경을 초기화합니다.mvn compile:src/main/java에 있는 소스 코드를 컴파일하여target/classes에 클래스 파일을 생성합니다.mvn test:src/test/java에 있는 단위 테스트 코드를 컴파일하고 실행합니다.mvn package: 컴파일된 코드와 리소스를 묶어 배포 가능한 아티팩트(JAR 또는 WAR)로 패키징합니다.mvn install: 패키징된 아티팩트를 로컬 Maven 저장소(~/.m2/repository)에 설치하여 다른 로컬 프로젝트에서 의존성으로 사용할 수 있게 합니다.mvn deploy: 빌드된 아티팩트를 원격 저장소(예: Nexus, Artifactory)에 업로드하여 팀원들과 공유합니다.
패키징된 JAR 파일은 다음과 같은 Java 명령어로 실행할 수 있습니다 (Manifest에 메인 클래스가 지정된 경우).
java -jar target/java-basic-app-1.0-SNAPSHOT.jar
3. Maven 웹 프로젝트 생성
표준 Java 프로젝트 대신 웹 애플리케이션을 생성하려면 maven-archetype-webapp 아키타입을 사용합니다.
mvn archetype:generate \
-DgroupId=com.example.web \
-DartifactId=web-app-demo \
-DarchetypeArtifactId=maven-archetype-webapp \
-Dversion=1.0.0-RELEASE \
-DinteractiveMode=false
이 명령어는 src/main/webapp 디렉토리와 WEB-INF/web.xml 파일을 포함한 표준 Java EE 웹 프로젝트 구조를 생성합니다. 생성 후 pom.xml 파일을 확인하여 <packaging>war</packaging>로 설정되어 있는지 확인할 수 있습니다.
4. IDE 독립성과 프로젝트 구조
Eclipse, IntelliJ IDEA와 같은 IDE는 Maven 프로젝트를 쉽게 생성하고 관리할 수 있는 GUI를 제공하지만, Maven CLI를 익혀두면 특정 IDE에 종속되지 않고 CI/CD 파이프라인이나 서버 환경에서도 동일한 빌드 프로세스를 유지할 수 있습니다.
Maven 프로젝트를 효과적으로 활용하기 위해서는 pom.xml을 통한 의존성 관리 방법, 표준 디렉토리 레이아웃(src/main/java, src/test/resources 등), 그리고 일반 Java 프로젝트와의 구조적 차이를 이해하는 것이 중요합니다.