2012-04-30 5 views
0

나는 lib/ 디렉토리에 항아리를하는 대신 WAR classes/ 디렉토리에 종속 항아리에서 내 모든 .class을 포함하고 싶습니다. 나는 또한 받는다는 - 종속성 플러그인를 참조압축이 풀린 JAR 의존성을 가진 WAR 빌드하기

my-webapp/ 
    ... 
    WEB-INF/ 
    classes/ 
     mylib-1.0-SNAPSHOT (all **.class**) 

하지만 내 항아리는 로컬 또는 원격 저장소에 설치되어 있어야합니다 :

my-webapp/ 
    ... 
    WEB-INF/ 
    lib/ 
     mylib-1.0-SNAPSHOT.jar 

내가 좋아하는 것 :

나는 있습니다. 하지만 내 WAR 전에 mylib-1.0-SNAPSHOT.jar이 컴파일됩니다. 만약 mvn package이라면 실패합니다!

그럼, 어떻게 전쟁 클래스로 내 항아리 종속성을 풀고?

+1

웹 응용 프로그램의 클래스 대신 항아리를 가지고있는 점은 무엇인가 : 항아리가 설치되면, 당신은 당신의 WAR를 구축 할 수 있습니다? – jddsantaella

+0

Jar에는 내 서비스의 공통 클래스가 들어 있기 때문에이 webapp에는 특정 클래스가 들어 있습니다. 동일한 클래스를 사용하는 여러 웹 응용 프로그램이 있으므로 Jar 종속성으로 패키지했습니다. 코드 중복이 없도록하십시오! 그게 옳은 길이라고 생각하니? – Aure77

+0

'WEB-INF/lib' 디렉토리에 있다면 공통 jar의 클래스를 사용할 수 있습니다. 'WEB-INF/lib'의 모든 것이 웹 애플리케이션의 클래스 패스에서 끝납니다. – user944849

답변

0

(항아리에 maven-shade-plugin처럼) 나는 commnet이를 쓰고 싶다,하지만 텍스트가 너무 깁니다. 죄송합니다

, 나는 당신의 요점을 파악 해달라고. 클래스를 공유하는 여러 개의 웹 응용 프로그램을 사용하여 공통 클래스를 JAR로 패키지화 했으므로 이제 jar를 배포하고 코드 중복을 피할 수 있습니다. 괜찮습니다. 이 시점에서 Webapp의 경우/WEB-INF/classes에/WEB-INF/lib /에 클래스가있는 것과 jar의 일부로 차이가 없기 때문에 webapp는 두 경우 모두 클래스를 사용할 수 있습니다.

Maven의 경우 프로젝트가 있어야합니다. 하나는 일반적인 jar에 대한 것이고, 하나는 webapp에 대한 것입니다 (일반적인 jar은 종속성입니다). webapp 중 하나에 WAR을 빌드하기 전에 공통 클래스가 변경된 경우 먼저 공용 저장소에 jar : mvn install을 설치해야합니다. mvn war:war

+0

하지만이 문제는 같은 패키지에 다른 클래스가있는 클래스가있을 때 발생합니다. 이 클래스들을 commons 클래스 용 Jar와 내 클래스 데이터를위한 * classes folder *로 구분하는 것은 자연스럽지 않습니다. 또한, 내 프로젝트는 실제로 Ant로 빌드되어, Maven을 변경하여 내 산출물 (jar, war, ear) 구조를 변경합니다. 그러나 설정할 옵션이 없으면 ok로 설정합니다. – Aure77

+0

이제 Ant 대신 Maven을 사용하도록 요청 받았다면, 나는 위에서 작성한 내용을 제안한다. 공통 클래스의 공통 jar와 특정 코드의 'classes' 폴더 (특정 webapp 애플리케이션의 특정 소스 코드). 컨벤션에서 뭔가를하려고 할 때 메이븐 (Maven)은 그렇게 좋지 않으므로 피하십시오. – jddsantaella

관련 문제