Maven war插件:仅归档类文件而不包含资源文件

8
在maven-war-plugin中有一个archiveClasses选项,它将所有类打包到单个.jar文件中,并在lib/文件夹中创建.war文件。
我需要做同样的事情,但是要把资源文件保留在classes目录中,这样它们仍然可以从类路径中访问,但易于修改。
最简单的方法是什么?
4个回答

5
也许你可以尝试将资源文件夹配置为插件配置中的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>

它可以工作,但资源也在jar包中重复。 - kolobok

2
一句话回答:maven-war-plugin没有提供选项来从使用archiveClasses标志创建的jar中排除资源。 这个问题的可能且最简单的解决方法是将位于src/main/java/resources目录下的文件移动到src/main/java/webapp/WEB-INF/classes目录下。

0

你只需要指定资源的位置即可。通常它会在src/main/resources中查找资源,但如果你需要它们在Java源代码树中,可以尝试:

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

不行。它们确实在src/main/resources中,但我只想将它们打包到.war文件内的classes/目录中,而Java .class文件应该在lib/目录下的.jar文件中。 - weekens

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接