2011-01-21 4 views
20

maven을 사용하여 war 패키지를 만들 때 "src/main/resources"디렉토리 아래의 파일과 디렉토리는/WEB-INF 대신/WEB-INF/classes에 복사됩니다./WEB-INF에서 어떻게 복사 할 수 있습니까?Maven : WEB-INF에 복사 된 리소스로 war 패키지를 얻는 방법은 무엇입니까?

덕분에, 랜드

UPDATE : 내 치어의 은 지금이 사용

<plugin> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.4.3</version> 
      <executions> 
       <execution> 
        <id>copy-resources</id> 
        <!-- here the phase you need --> 
        <phase>war</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>myapp/target/WEB-INF</outputDirectory> 
         <resources> 
          <resource> 
           <directory>src/main/resources</directory> 
           <filtering>true</filtering> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

을 내가 함께 MVN 시작 :

MVN -Dmaven.test.skip = 진정한 깨끗한 패키지 리소스 : 복사 리소스

하지만 내가 가진 : [INFO] 하나 개 이상의 필수 플러그인 매개 변수가 누락/무효 '자원 : 복사 자원'

[0] 다음을 지정 플러그인 '받는다는 - 자원 - 플러그인'에 대한 정의 내부 :

... 값 .

[1] 플러그인 '받는다는 - 자원 - 플러그인'에 대한 정의 내부에서 다음을 지정합니다

... VALUE 합니다.

저는 2.2를 사용하고 있습니다. 스 니펫은 기본적으로 문서와 동일합니다. 아이디어가 있습니까?

+0

목표 :'resources : copy-resources'를 실행하지 마십시오. 자동으로'copy-resources' 단계에 포함됩니다.) – coubeatczech

답변

27

resources:resources 플러그인의 outputDirectory 매개 변수를 구성하거나 파일을 src/main/webapp/WEB-INF/ 디렉토리 아래에 두십시오. resource plugin

편집 :

이 구성은 나를 위해 노력하고 있습니다 : 양식 somePhase 또는 목표 somePlugin:someGoal의 위상을 실행할 수 있습니다

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.4.2</version> 
    <executions> 
     <execution> 
     <id>default-copy-resources</id> 
     <phase>process-resources</phase> 
     <goals> 
      <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
      <overwrite>true</overwrite> 
      <outputDirectory>${project.build.directory}/${project.artifactId}-${project.version}/WEB-INF/</outputDirectory> 
      <resources> 
      <resource> 
       <directory>${project.basedir}/src/main/resources</directory> 
      </resource> 
      </resources> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

. 위상 호출은 interval [validate, phase]에있는 단계에 연결된 모든 플러그인 목표를 순서대로 호출하므로 명시 적으로 호출 할 필요가 없습니다.

+0

답장을 보내 주셔서 감사합니다. 위의 업데이트에서 답장을 확인하십시오. – Randomize

+0

'$ {project.artifactId} - $ {project.version}'대신 '$ {project.build.finalName}'을 (를) 사용할 수 있습니다. 이슈의 이름. – ivanjovanovic

24

웹 리소스는 클래스 경로에 배치해야하는 자바 리소스와 다릅니다. 웹 리소스는 war 플러그인을 통해 처리되며 src\main\webapp\WEB-INF\에 배치해야합니다. 이 경우, pom.xml에 추가 설정을하지 않아도 자동으로 작동합니다.

+0

그러나 Java 리소스를 자동으로 배포하지 않는 경우 Java 리소스를 처리하는 방법은 무엇입니까? – Eddy

+0

@Eddy "필수 장소"에 배치되지 않으면 대부분의 경우 소스 코드의 잘못된 위치에 놓습니다.자세한 내용을 알려주십시오. – kan

+0

네 말이 맞다! 이 경우 : maven을 사용하고'mvn clean'을 실행하십시오. maven은'src/main/resources' 대신'src/main/java'에 자원을 넣었을 때 다시 배포하지 않을 것입니다. 나는 일식을 사용하고있다. – Eddy

관련 문제