2011-01-21 77 views
20

當我使用maven創建一個war包時,目錄「src/main/resources」下的文件和目錄被複制到/ WEB-INF/classes而不是/ WEB-INF。我怎樣才能將它們複製到/ WEB-INF中?Maven:如何使用WEB-INF中複製的資源獲取一個war包?

感謝, 蘭特

UPDATE: 在我的POM現在我用這個:

<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]一個或多個必需的插件參數對於'resources:copy-resources'無效/丟失

[0]插件'maven-resources-plugin'的定義中指定了以下內容:

... VALUE 。

[1]裏面定義插件 'Maven的資源 - 插件' 指定下列內容:

... VALUE 。

我使用的Maven 2.2和片段基本上是相同的文件 任何想法?

+0

不運行`resources:copy-resources`目標,它會自動包含在階段`copy-resources`中(在我的答案中) – coubeatczech 2011-01-21 17:10:16

回答

27

要麼配置outputDirectory參數resources:resources插件,要麼將您的文件放在src/main/webapp/WEB-INF/目錄下。 resource plugin

編輯:

此配置爲我工作:

<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> 

可以在形式somePhase或目標somePlugin:someGoal運行階段。階段調用將按順序調用間隔[validate,phase]中的階段所掛接的所有插件目標,因此不需要顯式調用它們。

+0

感謝您的回覆,在上面的更新中檢查我的回覆 – Randomize 2011-01-21 16:43:56

+0

也可以使用`$ {project.build.finalName}`而不是`$ {project.artifactId} - $ {project.version}`來獲取工件的名稱。 – ivanjovanovic 2018-02-07 12:28:48

24

Web資源與java資源不一樣,它們應該放在classpath中。 Web資源通過war插件進行處理,應放入src\main\webapp\WEB-INF\。在這種情況下,它將在pom.xml中自動工作而無需任何額外配置。

相關問題