티스토리 뷰

Programming

Maven 용어정리

noonsong 2018. 6. 13. 17:17

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 


  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4.  
  5. <groupId>com.mycompany.app</groupId>
  6. <artifactId>my-app</artifactId>
  7. <version>1.0-SNAPSHOT</version>
  8. <packaging>jar</packaging>
  9.  
  10. <name>Maven Quick Start Archetype</name>
  11. <url>http://maven.apache.org</url>
  12.  
  13. <dependencies>
  14. <dependency>
  15. <groupId>junit</groupId>
  16. <artifactId>junit</artifactId>
  17. <version>4.8.2</version>
  18. <scope>test</scope>
  19. </dependency>
  20. </dependencies>
  21. </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 를 설정 할 수 있다 

  1. <project>
  2. ...
  3. <build>
  4. <plugins>
  5. <plugin>
  6. <groupId>org.apache.maven.plugins</groupId>
  7. <artifactId>maven-antrun-plugin</artifactId>
  8. <version>1.2</version>
  9. ...
  10. <dependencies>
  11. <dependency>
  12. <groupId>org.apache.ant</groupId>
  13. <artifactId>ant</artifactId>
  14. <version>1.7.1</version>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.apache.ant</groupId>
  18. <artifactId>ant-launcher</artifactId>
  19. <version>1.7.1</version>
  20. </dependency>
  21. </dependencies>
  22. </plugin>
  23. </plugins>
  24. </build>
  25. ...
  26. </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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함