티스토리 뷰
0. Maven
Maven 은 Java 용 프로젝트 관리 툴으로 복잡한 Java Project 에서 dependency 나 library 들을 일일히 설치할 필요 없이 필요한 구조를 미리 정의해두어 개발자가 한번에 build 를 할 수 있도록 도와준다.
아래는 Maven 의 목적
- Making the build process easy
- Providing a uniform build system
- Providing quality project information
- Providing guidelines for best practices development
- Allowing transparent migration to new features
1. pom.xml
Project Object Model. dependency 가 필요한 라이브러리들을 XML 형태로 pom 파일에 넣으면 자동으로 maven dependency 에 jar 파일을 추가해준다. pom 은 프로젝트를 build 하는데 필요한 모든 정보들이 정의되어있다.
mvn install 명령어 입력시 로컬 repository 에 pom 에 정의한 라이브러리를 다운받는다.
Example of pom.xml
- <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/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.mycompany.app</groupId>
- <artifactId>my-app</artifactId>
- <version>1.0-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>Maven Quick Start Archetype</name>
- <url>http://maven.apache.org</url>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.8.2</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- </project>
2. super pom
Maven 은 묵시적으로 모든 pom 이 super pom 을 상속받도록 설정되어있다. (Java 의 Object 클래스와 비슷한개념)
http://maven.apache.org/ref/3.0.4/maven-model-builder/super-pom.html
3. dependency
Java project 에서 두 모듈간의 연결 혹은 두 클래스간의 관계를 뜻한다.
dependency 추가를 하기위해서는 아래 3가지를 pom 파일에 추가해야한다.
Group Id : package 경로
Artifact Id : 프로젝트 이름
Version : 버젼
필요한 타겟 라이브러리만 추가하면, maven 이 해당 라이브러리가 의존하는 라이브러리까지 한번에 받아준다.
참고 https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
4. repository
Maven 은 POM 파일에서 정의한 dependency 에 해당하는 라이브러리를 모두 중앙 Maven repository (http://mvnrepository.com ) 에서 다운받는다
중앙 repository 정보를 사용자 PC 의 settings.xml 에서 정의해준다. (이 파일에서 proxy 세팅도 필요하다면 해줄 수 있음)
중앙저장소에서 다운받은 library 는 사용자의 로컬 repository 로 저장된다.
5.plugin
library 와 마찬가지로 dependency 를 설정 할 수 있다
- <project>
- ...
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- <version>1.2</version>
- ...
- <dependencies>
- <dependency>
- <groupId>org.apache.ant</groupId>
- <artifactId>ant</artifactId>
- <version>1.7.1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.ant</groupId>
- <artifactId>ant-launcher</artifactId>
- <version>1.7.1</version>
- </dependency>
- </dependencies>
- </plugin>
- </plugins>
- </build>
- ...
- </project>
6. module
하나의 maven 프로젝트에 여러개의 module 을 만들 수 있다
부모 모듈에는 자식의 모듈을 포함하고있다. 자식 모듈은 부모 모듈의 dependency 를 사용가능하다.
7. 기본 명령어
1) Maven Compile
- 컴파일 -> 결과를 target/classes 에 저장
2) mvn test
- 테스트 클래스 실행
3)mvn package
- compile->test-> build 를 모두 실행하고 패키지 파일을 생성한다.
-생성한 파일은 artifactID-SNAPSHOT.WAR 이런 형식으로 저장된다
4)mvn install
- 로컬 저장소에 배포
5)mvn deploy
- 패키징한 파일을 원격저장소에 배포
6)mvn clean
- 모든 결과물을 삭제 -> dependency 에러가 계속 날때 해결법!
'Programming' 카테고리의 다른 글
[Java] HashMap (1) | 2018.11.04 |
---|---|
[Java] 정리 (0) | 2018.06.13 |
[Java] 정규식 (0) | 2018.06.12 |
[Java 문제풀이] LinkedList, removeDuplicate (0) | 2018.05.20 |
[Java 문제풀이] Binary Numbers (0) | 2018.04.03 |