最近在做一个非标准目录的项目,但想使用maven管理,标准的java source路径为src/main/java
resource路径为src/main/resource.而这个项目现在的路径为src/java和src/conf.因此,在maven的pom中加上如下配置即可:
<build> ...... <sourceDirectory>src/java</sourceDirectory> <testSourceDirectory>src/java.test</testSourceDirectory> <resources> <resource> <directory>src/conf</directory> <includes> <include>**/*</include> </includes> </resource> <resource> <directory>src/java</directory> <includes> <include>**/*</include> </includes> <excludes> <exclude>**/*.java</exclude> </excludes> </resource> </resources> <testResources> <testResource> <directory>src/conf.test</directory> <includes> <include>**/*</include> </includes> </testResource> <testResource> <directory>src/java.test</directory> <includes> <include>**/*</include> </includes> <excludes> <exclude>**/*.java</exclude> </excludes> </testResource> </testResources> ...... </build>
这样maven打包时,就会编绎在src/java文件夹下的java文件,并将src/conf下的配置文件放到target的classes下;
如果还有其它在打包时,自动生成的java代码,或是多个java文件目录,那可以考虑使用专门做这个工作的plugin,配置如下:
<plugins> ...... <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.4</version> <executions> <execution> <id>add-source</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>${basedir}/src/java</source> <source>自定义的folder</source> </sources> </configuration> </execution> <execution> <id>add-test-source</id> <phase>generate-sources</phase> <goals> <goal>add-test-source</goal> </goals> <configuration> <sources> <source>${basedir}/src/java.test</source> <source>自定义的folder</source> </sources> </configuration> </execution> </executions> </plugin> ...... </plugins>
另外,如果web project中的webapp资源也不在标准的maven-war-plugin默认路径:${basedir}/src/main/webapp下,那么需要加入如下配置
<plugins> ...... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.1-beta-1</version> <configuration> <!-- 这里是你的webapp目录 --> <warSourceDirectory>${basedir}/src/webroot</warSourceDirectory> <archive> <addMavenDescriptor>false</addMavenDescriptor> <manifestEntries> <timestamp>${timestamp}</timestamp> </manifestEntries> </archive> </configuration> </plugin> ...... </plugins>