Maven Hello World 프로젝트 시작
- Visual Studio Code, Eclipse등 어떠한 에디터도 상관 없음.
- 빈 프로젝트로 시작
1. 특정 프로젝트 경로 최상위에 pom.xml을 생성
<project>
: 최상위 태그<groupId>
:- 프로젝트의 그룹명, 일반적으로 다른 컴포넌트와 라이브러리와 차별될 수 있는 유니크한 명칭을 가짐
- 관례적으로 회사 도메인명(google.com, naver.com)을 거꾸로한 명칭을 사용함
- 중앙의 공용 Maven Repository에서 수많은 라이브러리를 서비스하면서 unique한 groupId를 가지게 하기 위한 관례가 아닐까 추측됨
<artifactId>
: 해당 프로젝트 명칭(컴포넌트 명칭), groupId 범위 내에서 유일해야함<modelVersion>
:- pom.xml을 이루고 있는 maven xml문서 형식의 버전이다. 현재는 무조건
4.0.0
이다. 5.0.0
은 draft 상태이며 정식 발표되지 않았다.
- pom.xml을 이루고 있는 maven xml문서 형식의 버전이다. 현재는 무조건
<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