由于一些项目并未完全按照Maven的标准格式创建源目录,因此存在多个资源、源、测试源目录。下面说说怎样在pom.xml中配置多个源文件夹。
maven的默认结构如下:
src |-main |
|- java |
|- resource
|- webapp
|- WEB-INF
如图创建了如下错乱的目录形式:
其中src,item-common为源文件夹,item-test为测试的源文件夹,WebContent分别为源的资源文件夹
1、通过resources标签配置多个资源文件夹。
<build>
...
<resources>
<resource>
<directory>item-common</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
...
</build>
可以使用includes和excludes标签过滤资源文件。
2、通过Maven插件配置多个文件夹
通过查看build-helper-maven-plugin.jar的源码,看到有AddResourceMojo,AddSourceMojo,AddTestResourceMojo,AddTestSourceMojo四个类,这四个类就是用来添加文件夹的。
<build>
...
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<!-- 配置多个源文件夹 -->
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<!-- 在此加入源文件夹 -->
<source>item-common</source>
<source>src</source>
</sources>
</configuration>
</execution>
<!-- 配置多个测试源文件夹 -->
<execution>
<id>add-test-source</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<!-- 在此加入测试的源文件夹 -->
<source>item-test</source>
</sources>
</configuration>
</execution>
<!-- 配置多个源的资源文件夹 -->
<execution>
<id>add-resource</id>
<phase>generate-resources</phase>
<goals>
<goal>add-resource</goal>
</goals>
<configuration>
<resources>
<!-- 参见resources的配置 -->
<resource>
<directory>main/resources</directory>
</resource>
</resources>
</configuration>
</execution>
<!-- 配置多个测试源的资源文件夹 -->
<execution>
<id>add-test-resource</id>
<phase>generate-test-resources</phase>
<goals>
<goal>add-test-resource</goal>
</goals>
<configuration>
<resources>
<!-- 参见resources的配置 -->
<resource>
<directory>detective/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
...
</build>