Maven 의 - 로 컬 jar 가방 을 사용 하여 war 가방 에 포장 하 는 방법

2460 단어 Maven
전재 출처 를 밝 혀 주 십시오:http://blog.csdn.net/l1028386804/article/details/52594602
Maven 은 팀워크 와 오픈 소스 코드 를 발표 하 는 데 사용 되 기 때문에 이런 방법 은 매우 바람 직 하지 않다.로 컬 jar 가방 을 사용 하면 Maven 은 이 부분의 장점 을 잃 게 된다.그러나 제 가 만난 문 제 는 Maven 을 배우 고 싶 습 니 다. 그리고 예전 의 프로젝트 는 회사 의 프로젝트 가 모두 Maven 을 사용 하지 않 았 습 니 다.그리고 그 중 일부 jar 가방, 특히 일부 항목 build 이후 dist 폴 더 에 있 는 가방 을 참조 하고 싶 습 니 다.그래서 다음 방법 을 생각해 냈 다.
나 는 먼저 나의 Maven 프로젝트 다음 에 lib 폴 더 를 만들어 서 내 가 사용 할 jar 가방 을 모두 안에 넣 었 다.그리고 pom. xml 에 다음 과 같은 내용 을 추가 합 니 다.

 com.weiresearch 
 webharvest 
 1.0.0  
 system  
 ${project.basedir}/lib/webharvest.jar  

이곳 의 groupId, artifactId, version 은 모두 마음대로 쓸 수 있다.그리고 scope 는 system 으로 쓰 려 면 systemPath 는 인용 할 jar 패키지 경로 로 쓰 십시오.대량으로 가 져 올 수 있 을 지 는 모 르 겠 지만 테스트 해 본 적 이 없 지만 안 될 것 같 습 니 다.
하지만 또 하나의 번 거 로 운 문제 가 있 습 니 다. 제 프로젝트 를 war 가방 으로 포장 할 때 제 가 쓴 코드 만 있 었 고 인용 한 jar 가방 은 포함 되 지 않 았 습 니 다.귀 찮 습 니 다. 포 장 된 war 가방 은 직접 사용 할 수 없습니다.오랫동안 찾다 가 마침내 원인 을 찾 았 다.우선 Maven 을 정상적으로 사용 하 는 다른 가방 입 니 다. 다음 과 같 습 니 다.
  

javax.servlet  
servlet-api  
2.5 
provided 
 

servlet 가방 을 참조 합 니 다. 가장 중요 한 것 은 scope 라 는 필드 입 니 다. provided 는 이 jar 가방 은 이 프로젝트 의 가능 한 운영 환경 에서 제공 되 기 때문에 war 가방 에 포장 하지 않 아 도 됩 니 다.따라서 war 가방 에 servlet 이라는 가방 을 포함 시 키 려 면 scope 라 는 말 을 삭제 하면 됩 니 다.
위 에 서 는 시스템 이라는 scope 를 이용 해 도입 한 webharvest 가방 도 도입 되 지 않 았 다.인터넷 댓 글 을 보고 나 서 야 시스템 이라는 scope 를 사용 하지 않 는 것 이 좋 겠 다 고 말 했다.아마 이 시스템 이 말 하 는 건이 해결 방법 은 사람 을 귀 찮 게 한다. 마지막 으로 이 문답 을 보고 해결 한 것 이다. Maven 2 assembly with dependencies: jar under scope "system" not included, 해결 방법 은 다음 과 같다.
  
org.apache.maven.plugins 
 maven-war-plugin 
    
   
   
${project.basedir}/lib 
 WEB-INF/lib
 true  
   
**/*.jar 
  
  
  
  

directory 필드 는 jar 가방 을 사용 할 모든 디 렉 터 리 를 포함 합 니 다.
targetPath 는 컴 파일 후 이 jar 가방 을 복사 할 위치 입 니 다.
아래 필터 링 은 jar 를 접미사 로 하 는 모든 파일 만 가 져 오 는 것 입 니 다.
위의 설정 을 통 해 당신 이 원 하 는 jar 가방 을 가 져 올 수 있 습 니 다.

좋은 웹페이지 즐겨찾기