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 빨강토끼
,


좋은 코드의 정의
-유지보수성이 높다
-신속하고도 효율적으로 동작한다.
-정확하게 동작한다.
-불필요한 부분이 없다.

코드를 분할 하는 이유
-가독성의 향상 : 매소드의 사이즈가 100행이 넘으면 가독성이 떨어짐, 30행이 적당함.
-유지보수성의 향상
-재이용성의 향상

내부클래스의 장점
-실제로 사용되는 장소 바로근체에 클래스가 있으므로 알기 쉽다.
-원래 클래스와의 의존관계(dependencies)를 static으로 제어할 수 있다.
-새로운 파일을 늘리지 않아서 좋다.

추상화의 예
-공통적인 처리를 정리하여 부모클래스를 작성하기
-데이터베이스의 접속 정보를 설정파일로 외부 추출하기
-비슷한 행동( 메소드)을 인터페이스로 추출하기

추상화란 '비슷한 것을 동일하게 취급함으로써 프로그램을 간단하게 하는것' 이다.


Posted by 빨강토끼
,