m2eclipse是Eclipse的Maven插件,界面上可设置修改资源文件或Update Project Configuration后,触发Maven Lifecycle,相当于为扩展工程特定的需求提供了可能。比如:修改源码或配置文件后,将编译结果复制到应用服务器的部署目录下,都可以用自动化方式来实现。
(1)Windows -> Preferences -> Maven,设置Update Project Configuratoin时触发的Maven Lifecycle
(2)Maven工程右键 -> Properties -> Maven -> Lifecycle Mapping,设置修改Maven工程资源文件时触发的Maven Lifecycle
m2eclipse插件上,默认绑定的Maven生命周期是process-resources。结合m2eclipse触发pom.xml中绑定的Maven生命周期来实现特殊的需求,如下:
当process-resource阶段时,将Maven工程类路径下的类复制到应用服务器的部署目录下。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>dev-deploy</id>
<phase>process-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<copy todir="${deploy.home}/WEB-INF/classes" overwrite="true" failοnerrοr="false">
<fileset dir="${project.basedir}/target/classes" />
</copy>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
上面的原理很简单,但实现时发现当修改源码保存后,并未触发pom.xml里绑定到process-resoures生命周期的maven-antrun-plugin插件复制文件。
但执行mvn package或右键 -> Maven -> Update Project Configurate时,都可以触发maven-antrun-plugin插件复制文件。只是在Eclipse上修改源码后,并不能触发复制文件。后来发现修改src/main/resources下的资源文件,是可以触发复制文件的。
主要问题出在,Eclipse下的源码m2eclipse不认为是资源文件,所以修改了也不会触发process-resources复制文件。但可以让m2eclipse将源码当作是资源文件来解决,方法就是在pom.xml中将src/main/java声明为资源文件,如下:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<filtering>false</filtering>
<excludes>
<exclude>**</exclude>
</excludes>
</resource>
<resources>
</build>
做完以上resource声明,就可以实现Eclipsed中修改完源码后m2eclipse触发自动复制文件了,这是个小技巧,但不知道时真让人抓狂
