**최근에는 gradle을 더 많이 사용하는 추세라고 알고 있지만 토이 프로젝트에서 maven을 사용하게 되어**
**Maven을 정리해보게 되었습니다.**
#### 기능
- 빌드툴
- 패키징
배포 가능한 파일 생성 : war, jar, exe 등
-프로젝트 관리
버전 및 릴리즈 관리, javadoc 작성 가능
-test
단위 테스트 수행, 빌드 결과 정상인지 점검
-배포
실운영 서버에 배포가 아닌 프로젝트 버전 관리 위한 특정 원격 저장소에 배포
##### maven hello world 프로젝트 시작
###### 특정 프로젝트 경로 최상위에 pom.xml을 생성
<project>: 최상위 태그
<groupId>: 프로젝트 그룹명, 일반적으로 다른 컴포넌트와 라이브러리와 차별될 수 있는 유니크한 명칭을 가짐
관례적으로 회사 도메인 명을 거꾸로 한 명칭을 사용
<artifactId> : 해당 프로젝트 명칭(컴포넌트 명칭), 유니크해야함
<modelVersion>: pom.xml 을 이루고 있는 maven xml 문서 형식의 버전이다. 현재는 무조건 4.0.0이다.
5.0.0 은 draft 상태이며 정식 발표되지 않았다.
<version>: 해당 artifact(컴포넌트)의 version, 뒤쪽 SNAPSHOT은 아직 개발 중임을 의미함
<package>: 어떤 파일 형식으로 패키징할 것인가를 정의, jar, war, exe 등이 올 수 있음
<project>
<groupId>com.blindkaga</groupId>
<artifactyId>HelloWorld</artifactId>
<modelVersion>4.0.0</modelVersion>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packagin>
</proejct>
##### 프로젝트에 src/main/java 디렉토리를 생성하고
HelloWolrd.java 파일을 생성.
public class HelloWolrd{
public static void main(String args[]){
System.out.println("Maven Hello World!");
}
}
##### 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-comipler-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>
##### 빌드 수행
빌드를 하기전 빌드 결과 위치를 비우는 명령어 수행
mvn clean
compile 수행 명령어
compile 후 target 디렉토리가 생성되며 컴파일된 결과물이 만들어짐
target/classes/HelloWolrd.class 파일 확인 가능
mvn compile
##### 실행
아래의 명령어로 실행하면 Maven Hello World! 가 정상적으로 찍힌다.
-cp: 클래스 패스 경로
java -cp target/classes HelloWorld
Maven Hello World!
##### 패키징
-java 패키징 명령어
target/HelloWorld-1.0.SNAPSHOT.jar 파일이 생성된다.
mvn package
##### 패키징된 파일 실행
java -jar target/HelloWorld-1.0-SNAPSHOT.jar HelloWorld
###### 참조:
https://wikidocs.net/17298
'Spring' 카테고리의 다른 글
maven 정리 (3) (0) | 2023.02.05 |
---|---|
maven 정리 (2) (0) | 2023.02.05 |
의존성 주입과 초기화 (0) | 2022.07.26 |
스프링 : AOP (0) | 2022.07.22 |
spring-boot : application.yml ( 데이터베이스 연동) (0) | 2021.03.04 |