m2eclipse触发Maven生命周期

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" failonerror="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触发自动复制文件了,这是个小技巧,但不知道时真让人抓狂 酷

猜你喜欢

转载自yyjlinux.iteye.com/blog/1828675
今日推荐