2013-06-19 49 views
1

我有以下的POMMaven的戰爭的包裝,包括類忽略排除資源

<project> 

    .... 
    <packaging>war</packaging> 
    .... 
    <build> 
     <plugins> 
      <plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <excludes> 
        <exclude>config/**/*</exclude> 
       </excludes> 
      </configuration> 
     </plugin> 

     <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.3</version> 
    <configuration> 
     <archiveClasses>true</archiveClasses> 
        <warSourceExcludes>WEB-INF/sass/**</warSourceExcludes> 
        <attachClasses>true</attachClasses> 
        <webResources> 
         <resource> 

          <directory>src/main/resources/config</directory> 

          <excludes> 
           <exclude>**/*</exclude> 
          </excludes> 
         </resource> 
        </webResources> 
    </configuration> 
    </plugin> 
... 
</project> 

正如你所看到的,我打包的戰爭,我.class文件不在我的WEB-INF/classes文件夾 - 它們被打包成一個JAR代替。

現在,我拼命試圖從我的JAR中排除一些資源 - 但它不起作用。當我運行mvn jar:jar - 資源被排除,但是當我運行mvn package資源在那裏。

請幫忙。

回答

0

您沒有將jar:jar目標綁定到生命週期階段。當您從命令行運行jar:jar時,排除情況正常;當你運行mvn clean package我懷疑jar:jar沒有執行。嘗試的目標結合到一個階段:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <executions> 
     <execution> 
     <goals><goal>jar</goal></goals> 
     <phase>prepare-package</phase> 
     <configuration> 
      <excludes> 
       <exclude>config/**/*</exclude> 
      </excludes> 
     </configuration> 
     </execution> 
    </executions> 
</plugin> 

僅供參考,war:war plugin goalarchiveClasses功能確實相似,我想你想實現,而不需要單獨的插件配置的東西。

1

看來@ user944849是正確的 - 事實上,war插件不使用jar插件來實現JAR打包。

但是,他的回答給了我一個錯誤的結果,因爲它只會創建2個罐子 - 一個將與資源和另一個沒有。 WAR仍然會使用錯誤的。

正確的答案是使用新的maven resources標記。

對應於我的配置如下所示

<build> 
     .... 
     <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <excludes> 
        <exclude>config/**/*</exclude> 
       </excludes> 
       <filtering>false</filtering> 
      </resource> 
     </resources> 
     .... 
    </build> 
的一個