Maven war包装,包括忽略排除资源的类

时间:2013-06-19 14:37:18

标签: maven maven-3

我有以下pom

 <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文件夹中时,我打包了一个WAR - 它们被打包成一个JAR。

现在,我拼命想从我的JAR中排除一些资源 - 但它不起作用。当我运行mvn jar:jar时 - 资源被排除,但是当我运行mvn package时,资源就在那里。

请帮忙。

2 个答案:

答案 0 :(得分:1)

似乎@ user944849是正确的 - 事实上,war插件不使用jar插件来实现JAR打包。

然而,他的答案仍然给我一个错误的结果,因为它只会创建2个罐子 - 一个是资源而另一个没有。 WAR仍将使用错误的WAR。

正确答案是使用新的maven resources标记。

与我的配置对应的那个如下

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

答案 1 :(得分: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功能与我认为您尝试实现的功能类似,而无需单独的插件配置。