2

我有以下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>

如您所见,我打包了一个 WAR,而我的.class文件不在我的WEB-INF/classes文件夹中 - 它们被打包到一个 JAR 中。

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

请帮忙。

4

2 回答 2

1

看来@user944849 是对的——事实上,war 插件并没有使用jar 插件来实现JAR 打包。

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

正确答案是使用新的 mavenresources标签。

与我的配置相对应的配置如下

    <build>
      .... 
       <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>config/**/*</exclude>
                </excludes>
                <filtering>false</filtering>
            </resource>
        </resources>
      ....
     </build>
于 2013-06-19T15:17:54.367 回答
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 插件目标archiveClasses的功能类似于我认为您正在尝试实现的功能,而无需单独的插件配置。

于 2013-06-19T15:05:58.197 回答