maven常见的插件有compile插件,deploy插件,jetty插件等等,这些插件有的是主动去执行,有的是在maven特定的生命周期中执行。我们需要在这些生命周期自动或者手动去执行一些嵌入的功能,比如生成辅助代码,一些环境的配置之类的,最好就是用插件去完成。
validate
compile
test
package
integration-test
verify
install
deploy
1、新建一个maven的simple project。
2、在maven的pom中加入一个maven-plugin-api依赖以及maven-plugin-plugin插件,并将对应的package类型改为maven-plugin
<packaging>maven-plugin</packaging>
...
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.0</version>
<executions>
</executions>
<configuration>
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
</configuration>
</plugin>
3、编写一个类继承AbstractMojo并且实现execute方法,并在类注释中用@goal标注插件执行的单元
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
/**
* @goal hello
* @phase process-sources
*/
public class MojoExample extends AbstractMojo {</span>
public void execute() throws MojoExecutionException, MojoFailureException {
getLog().info("Hello world~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
}
}
打包后,用mvn install到本地仓库,然后在项目中就可以引入对应的plugin
<plugin>
<groupId>com.xxx</groupId>
<artifactId>plugintest</artifactId>
</plugin>
执行:mvn groupID:artifactID:version:goal
4、最后说一下调试吧,我用的是intellij,在intellij中开发这个项目的时候,将插件加入某个项目作为其module,然后在pom文件中引入插件,并且在intellij的Terminal中用
mvnDebug groupID:artifactID:version:goal 来启动插件,并且在插件的execute方法中打上断点。这个是maven的远程调试,我们必须在intelli中用remote来连接过去。新增一个执行,然后端口设置为8000,然后启动即可。
github上有很多现成的插件的源码,随便找一个去研究研究,模仿一下就行了,最重要的是明白自己需要做什么。