2012-11-14 2 views
2

Maven 프로젝트에 필요한 다른 프로젝트 (.jsp, .tag 파일)의 종속성이 있습니다. 이를 해결하기 위해 나는이 다른 프로젝트들로부터 "자원"항아리를 만들었고 그것들을 maven의 종속물로 지정했다. 그런 다음 병을 압축 해제 (생성 - 소스 수명주기 단계에서 개미)하고 파일을 필요한 곳으로 복사합니다. 이것은 질문이있는 곳입니다 (더 나은 전반적인 접근에 대한 제안도 환영합니다). 나는 내가이 파일들을 내가 원하는 대상 디렉토리로 옮길 수 있다고 생각하고 있었다. 그리고 그것들은 전쟁과 함께 포장 될 것이지만 작동하지 않는다. 이후,생성 된 파일을 Maven과의 전쟁에 포함시키는 방법 (소스에 추가하지 않기)

How create file and put it in a war with Maven?

Rename a generated file in Maven before building WAR

그러나, 나는 정말 내 소스 코드에 주변에 이러한 파일을 유지하고 싶지 않은 : 일반적인 접근 방식은 전쟁 플러그인에 추가 자원 디렉토리를 추가 할 것 같다 그들은 다른 프로젝트에 속해 있습니다. 항아리에 임시 자원을 포함시킬 수있는 방법이 있습니까?

답변

2

Maven War Overlay을 볼 때 이것이 전형적인 경우라고합니다.

오버레이는 여러 웹 응용 프로그램에서 공통 리소스를 공유하는 데 사용됩니다. WAR 프로젝트의 종속성은 WAR 프로젝트 자체에 오버레이 된 WAR 인공물을 제외하고 WEB-INF/lib에 수집됩니다.

즉, 다른 전쟁을 치고 자신의 전쟁에 적용 할 수 있습니다. 가장 좋은 방법은 모든 공통 자원이 오버레이 기술을 사용하는 다른 전쟁에서 사용되는 하나의 부모 전쟁에 속할 것입니다.

당신은 당신이 오버레이로 사용하려는 전쟁에 종속성을 추가 :

<dependency> 
    <groupId>com.acne</groupId> 
    <artifactId>acne-web-style</artifactId> 
    <type>war</type> 
    <scope>compile</scope> 
</dependency> 

그런 다음 당신은 maven-war-plugin에 적용 :

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.2</version> 
    <configuration> 
     <overlays> 
      <overlay> 
       <groupId>com.acne</groupId> 
       <artifactId>acne-web-style</artifactId> 
       <includes> 
        <include>**/resources/*.jpg</include> 
       </includes> 
      </overlay> 
      <overlay> 
       <!-- empty groupId/artifactId represents the current build --> 
      </overlay> 
     </overlays> 
    </configuration> 
</plugin> 
+0

작품을 마법처럼, 감사합니다. 이것은 내가 밖에 있다는 것을 몰랐던 멋진 기능입니다. 또한 프로젝트 간의 관계가 하나의 방식이기 때문에 (하나는 다른 하나에 의존하지만 다른 하나는 그렇지 않음) 마스터 주머니 대신 주 프로젝트에 오버레이가 있습니다. – Noremac

+0

좋아요! 내가 부모 전쟁을 말했을 때 나는 주인 pom을 의미하지는 않았다. 그러나 나는 당신이 그것을 알아 차렸다 고 생각한다. – maba

관련 문제