maven插件编写与调试

来源:互联网 发布:unity3d 调用 so 编辑:程序博客网 时间:2024/04/29 18:07

    maven常见的插件有compile插件,deploy插件,jetty插件等等,这些插件有的是主动去执行,有的是在maven特定的生命周期中执行。我们需要在这些生命周期自动或者手动去执行一些嵌入的功能,比如生成辅助代码,一些环境的配置之类的,最好就是用插件去完成。

validatecompile test packageintegration-test verify installdeploy
    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上有很多现成的插件的源码,随便找一个去研究研究,模仿一下就行了,最重要的是明白自己需要做什么。


0 0
原创粉丝点击