【发布时间】:2011-10-07 16:36:25
【问题描述】:
maven-war-plugin 中有一个archiveClasses 选项,它将所有类打包在一个 .jar 中,然后在 lib/ 文件夹中创建带有该 jar 的 .war 文件。
我也需要这样做,但将资源文件保留在 classes 目录中,以便它们仍然可以从 classpath 访问但易于修改。
最简单的方法是什么?
【问题讨论】:
maven-war-plugin 中有一个archiveClasses 选项,它将所有类打包在一个 .jar 中,然后在 lib/ 文件夹中创建带有该 jar 的 .war 文件。
我也需要这样做,但将资源文件保留在 classes 目录中,以便它们仍然可以从 classpath 访问但易于修改。
最简单的方法是什么?
【问题讨论】:
您应该能够指定这些资源的位置。它通常在 src/main/resources 中查找资源,但如果您在 java 源代码树中需要它们,您可以尝试:
<resources>
<resource>
<directory>${basedir}/src/main/java</directory>
<filtering>true</filtering>
<includes>
<include>*.xml</include>
</includes>
</resource>
</resources>
【讨论】:
也许您可以尝试将您的资源文件夹配置为 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>
【讨论】:
你可以这样做来解决问题:
<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>
【讨论】:
单行答案:
maven-war-plugin中没有提供用于从使用archiveClasses标志创建的 jar 中排除资源的选项。
解决此问题的可能且最简单的解决方法是将src/main/java/resources 目录下的文件移动到src/main/java/webapp/WEB-INF/classes 目录。
【讨论】: