[Maven] 공부중...
///// Maven (메이븐)
컴퓨터 프로그래밍 언어의 하나인 자바 (JAVA)의 빌드 툴이다.
///// 다운로드
http://maven.apache.org/download.html
///// 설치
1. 압축 풀기
2. 환경 변수 설정
MAVEN_HOME=
PATh=MAVEN_HOME/bin
///// 설정하기(설정파일: MAVEN_HOME/conf/settings.xml)
- 로컬저장소 위치 변경
<localRepository>경로</localRepository>
///// 프로젝트 생성
mvn archetype:generate -DgroupId=com.test.start -DartifactId=projectname -DarchtypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
1) 프로젝트 구조(폴더)가 기본적으로 생성됨
projectname/pom.xml
projectname/src/main/java
projectname/src/main/java
2) App.java와 AppTest.java가 생성됨
projectname/src/java/com/test/start/App.java
projectname/test/java/com/test/start/AppTest.java
///// 테스트 하기
mvn test-compile
projectname/src/main/resources의 자원들을 projectname/target/classes로 복사
projectname/src/main/java의 소스를 컴파일하여 projectname/target/classes로 복사
src/test/resources의 자원을 target/test-classes로 복사
src/test/src/main/java의 소스를 컴파일하여 target/test-classes로 복사
mvn test
1) test-compile 후
2) 실행하여 결과 보고(테스트 함)
///// 컴파일 하기(.java -> .class )
mvn compile
1) projectname/src/main/resources의 자원들을 projectname/target/classes로 복사
2) projectname/src/main/java의 소스를 컴파일하여 projectname/target/classes로 복사
///// 테스트 및 컴파일 데이터 지우기
mvn clean
projectname/target 폴더를 삭제
///// 프로젝트 패키징 (jar 또는 war파일로 압축)
mvn package
1) projectname/target 에 패키징된 파일이 저장됨
mvn install
1) package 후
2) USER_HOME/.m2/repository/com/test/start/projectname/target 에 패키징된 파일이 복사됨
mvn deploy
2) install 후
3) 외부저장소에 복사됨
///// 유용한 기능
- 로그 파일 생성
mvn clean install --log-file 파일명.txt
- 디버깅 로그 파일 생성
mvn clean install -X > 파일명.txt
- 단위 테스트 실행하지 않고 패키징하기
mvn –Dmaven.test.skip=true package
- 디펜던씨(의존관계) target폴더로 싹 가져오기
mvn dependency:copy-dependencies
1) target/dependency 디렉토리가 생성됨
2) jar파일이 복사됨(pom.xml의 <dependencies>에 설정한 것 외에도 설정한 것의 의존 관계의 jar도 복사됨)
- 라이브러리 구조를 트리(tree) 형태로 파악
mvn dependency:tree
-
mvn dependency:resolve
///// 간단한 개념
- 실행 단위(?)
페이즈(Phase)
플러그인(plugin)
골(Goal)
- 메이븐 저장소
중앙 저장소 :
원격 저장소 :
로컬 저장소 : 개발자 PC의 USER_HOME/.me/repository
- POM (Project Object Model)
메이븐 저장소 설정
<repositories>
<repository>
...
</repository>
<repository>
...
</repository>
</repositories>
라이브러리 관리
<dependencies>
<dependency>
...
</dependency>
<dependency>
...
</dependency>
</dependencies>
///// 에러
에러: cannot find symbol
문제:
해결:
참조:
에러: cannot read zip file
문제:
해결:
참조:
에러: package net.sf.json does not exist
문제:
해결:
1) pom.xml을 열고
2) <groupId>net.sf.json-lib</groupId> 을 검색해서
3) <version>2.2.3</version>을 <version>2.4</version>로 변경
참조: http://stackoverflow.com/questions/4173214/maven-missing-net-sf-json-lib
에러: package org.springmodules.validation.commons does not exist
문제:
1. 내 IDE(인텔리제이14)로 해당 Class를 확인했다.
1) [ERROR] location에 찍힌 class를 연다.
2) [ERROR] symbol에 찍힌 class를 사용하고 있는 곳을 [Ctrl]+[클릭]하여 들어가 보니
2. Negative to the spring bean declaration(s) 라는 경고가 표시되어 있다.
해결:
참조:
에러: unmappable character for encoding MS949
문제: 인코딩 설정 문제
해결:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>${java-version}</source>
<target>${java-version}</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
참조:
///// 참고
메이븐(Maven) Part 1 What is Maven : http://rakisis.tistory.com/16
Maven 5장 - 메이븐을 이용한 의존 라이브러리 관리 : http://gt1000.tistory.com/entry/Maven-5%EC%9E%A5-%EB%A9%94%EC%9D%B4%EB%B8%90%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%9D%98%EC%A1%B4-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EA%B4%80%EB%A6%AC
Maven 가이드 01. 설정과 생성 : http://pirrip.tistory.com/entry/Maven-%EA%B0%80%EC%9D%B4%EB%93%9C-01