Maven war插件:archiveClasses,无需归档资源

时间:2011-07-18 13:21:13

标签: java resources maven war

maven-war-plugin中有一个archiveClasses选项,它将所有类打包在一个.jar中,然后在lib /文件夹中创建带有该jar的.war文件。

我需要这样做,但是将资源文件保留在classes目录中,这样它们仍然可以从类路径访问,但很容易修改。

最简单的方法是什么?

4 个答案:

答案 0 :(得分:4)

也许您可以尝试将资源文件夹配置为WebResource 插件配置。

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <archiveClasses>true</archiveClasses>
        <webResources>
            <resource>
                <directory>src/main/resources</directory>
                <targetPath>WEB-INF/classes</targetPath>
                <filtering>true</filtering>
            </resource>
        </webResources>
    </configuration>
</plugin>

答案 1 :(得分:2)

  

一行答案: maven-war-plugin中没有提供任何选项来排除使用archiveClasses标记创建的jar中的资源。

此问题的可能且最简单的解决方法是将src/main/java/resources目录下的文件移动到src/main/java/webapp/WEB-INF/classes目录。

答案 2 :(得分:0)

您应该只能指定这些资源的位置。它通常在src / main / resources中查找资源,但是如果你在java源代码树中需要它们,你可以尝试:

<resources>
    <resource>
        <directory>${basedir}/src/main/java</directory>
        <filtering>true</filtering>
        <includes>
            <include>*.xml</include>                
        </includes>
    </resource>
</resources>

答案 3 :(得分:0)

你可以这样做来解决问题:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <warName>${project.war.name}</warName>
        <warSourceExcludes>**/*.class</warSourceExcludes>
        <archiveClasses>true</archiveClasses>
    </configuration>
</plugin>