- 기본 프로젝트 생성성

mvn -B archetype:generate -DgroupId=com.example -DartifactId=hajiboot -Dversion=1.0.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-quickstart


- 프로젝트에 사용하는 라이브러리의 종속성 확인

mvn dependency:tree

Posted by 빨강토끼
,

maven 으로 jar 를 생성하여 배포할때 종속적인(dependency) 라이브라리들이 실행시 필요합니다.

war 프로젝트는 WEB-INF 라는 폴더아래로 필요한것들을 넣어주지만 jar에서는 일일히 dependency로 추가된
라이브러리들을 처리하는것이 무척 귀찮고 막막합니다.

하나씩 잡아줘보지만 한두개도 아니고....
이럴땐 2가지 방법이 있습니다.

첫번째는 dependency를 따로 폴더안으로 모두 복사해오고 META-INF/MENIFEST.MF를 수정하는 것입니다.
아래와 같이 플러그인을 추가하고 goal로 install을 실행하면 모든 dependency 들이 lib안으로 복사하여 모으고 jar파일생성시  META-INF/MENIFEST.MF를 수정합니다.




두번째방법은 jar 안에 모든 dependency를 포함시키는 것입니다. jar하나로 모든 라이브러리들이 포함되어 실행이 되는 구조입니다. 당연히 파일크기가 커지겠지요.



그리고
maven assembly:assembly 라고 콘솔에서 실행하면
abc-0.0.1-SNAPSHOT.jar
abc-0.0.1-SNAPSHOT-jar-with-dependencies.jar

위와 같이 라이브러리가 포함된 jar와 일반 jar 가 생성된것이 보입니다.

참조

http://entireboy.egloos.com/4615383
http://redrebel.tistory.com/entry/maven-으로-생성한-jar-파일이-실행이-안될때-NullPointerException


Posted by 빨강토끼
,


위와 같은 에러가 나오면서 maven 에서 mvn install 을 통해서 생성한 jar 파일이 실행이 안되는 경우가 있습니다.
이경우에는 실행가능한 jar를 생성할때 실행할 mainClass 를 지정하지 않아서 생기는 문제입니다.

실행가능한 JAR 를 만드는데 아래와 같은 단계를 추천합니다.

1. JAR 의 MAINFEST.MF 파일에서 main 클래스를 정의합니다. (MAINFEST.MF 파일을 Maven에서 애플래케이션을 패키징할때 생성되는 파일입니다.)
2. 프로젝트에 종속된 모든 라이브러리를 찾습니다.
3. 애플리케이션에서 해당 라이브러리를 참조할수 있도록 MAINFEST.MF 파일에 포함시킵니다.

위의 작업을 수동으로 직접할 수 도 있지만 maven-jar-plugin 과 maven-dependency-plugin 이라는 maven 플러그인을 사용하여 효율적으로 수행할 수 있습니다.

maven-jar-plugin
pom.xml 파일의 <build></build> 안에 아래내용을 추가합니다.



mainClass 에 실행할 메인클래스를 지정합니다.

maven-dependency-plugin

pom.xml 파일의 <build></build> 안에 아래내용을 추가합니다.


위와 같이 내용을 추가하였으면 다시 jar를 만들고 실행해 보면 실행이 될겁니다.

참조 :
https://www.ibm.com/developerworks/kr/library/j-5things13/
Posted by 빨강토끼
,

Maven으로 PMD check 중에
[WARNING] Error while parsing xx/xx.java: Can't use generics unless running in JDK 1.5 mode!
라는 메시지가 떠서 구글을 검색해봤는데

<properties> 

   <targetJdk>1.6</targetJdk> 
</properties> 


이것을 추가 하라고 나옵니다.
Posted by 빨강토끼
,