Maven 정복 - 2. Maven Hello World!

Maven Hello World 프로젝트 시작

  • Visual Studio Code, Eclipse등 어떠한 에디터도 상관 없음.
  • 빈 프로젝트로 시작

1. 특정 프로젝트 경로 최상위에 pom.xml을 생성

  • <project> : 최상위 태그
  • <groupId> :
    • 프로젝트의 그룹명, 일반적으로 다른 컴포넌트와 라이브러리와 차별될 수 있는 유니크한 명칭을 가짐
    • 관례적으로 회사 도메인명(google.com, naver.com)을 거꾸로한 명칭을 사용함
    • 중앙의 공용 Maven Repository에서 수많은 라이브러리를 서비스하면서 unique한 groupId를 가지게 하기 위한 관례가 아닐까 추측됨
  • <artifactId> : 해당 프로젝트 명칭(컴포넌트 명칭), groupId 범위 내에서 유일해야함
  • <modelVersion> :
  • <version> : 해당 artifact(컴포넌트)의 version, 뒤쪽 SNAPSHOT은 아직 개발 중임을 의미함
  • <packaging> : 어떤 파일 형식으로 패키징할 것인가를 정의, jar, war, exe 등이 올 수 있음
<project>
    <groupId>com.blidkaga</groupId>
    <artifactId>HelloWorld</artifactId>
    <modelVersion>4.0.0</modelVersion>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
</project>

2. 프로젝트에 src/main/java 디렉토리를 생성하고 HelloWorld.java 파일을 생성 후 아래 코드 입력

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("Maven Hello World!");
    }
}

3. compile 버전 정보 입력

  • 위쪽 1번 pom정보가 기본적으로 작성되어야할 항목이지만, 현재 시점에서는 컴파일시 아래와 같은 에러가 발생함
  • compile을 상위 Java버전으로 컴파일을 수행할 추가 정보를 입력함
[ERROR] Source option 5 is no longer supported. Use 6 or later.
[ERROR] Target option 1.5 is no longer supported. Use 1.6 or later.
<project>
    ... 생략
    <build>
        <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
            <source>소스코드 Java 버전(ex 1.8)</source>
            <target>compile시 결과물 Java 버전(ex 1.8)</target>
            </configuration>
        </plugin>
        </plugins>
    </build>
</project>

4. 빌드 수행

  • 빌드를 하기전 빌드 결과 위치를 비우는 명령어, 콘솔 명령창에서 수행
$ mvn clean
  • compile 수행 명령어
  • compile 후 target 디렉토리가 생성되며 컴파일된 결과물이 만들어짐
  • target/classes/HelloWorld.class 파일 확인 가능
$ mvn compile

5. 실행

  • 아래의 명령어로 실행하면 Maven Hello World! 가 정상적으로 찍힌다.
  • -cp : 클래스 패스 경로
$ java -cp target/classes HelloWorld
Maven Hello World!

6. 패키징

  • java 패키징 명령어
  • target/HelloWorld-1.0-SNAPSHOT.jar 파일이 생성된다.
$ mvn package

7. 패키징 된 파일 실행

$ java -jar target/HelloWorld-1.0-SNAPSHOT.jar HelloWorld