项目中需要maven编译时能对空的goal进行默认处理,而不是报错
自动动手试了下maven plugin的编写,看了下资料不是很难
1、新建工程
可以使用eclipse的mvn插件快捷创建mvn project
archetype选择时
group Id为org.apache.maven.archetypes
Artifact Id为maven-archetype-quickstart
2、修改pom文件
2.1修改packaging方式
<packaging>jar</packaging>
为
<packaging>maven-plugin</packaging>
2.2 增加maven-plugin-api的依赖
<dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> <version>2.0</version> </dependency>
2.3 修改一些groupId、artifactId
<groupId>com.alibaba.b2b.platform.qp</groupId> <artifactId>MavenPlugin</artifactId> <version>1.0.0</version> <packaging>maven-plugin</packaging>
3、新建类继承自AbstractMojo类,并实现execute()方法
package com.alibaba.b2b.platform.qp.MavenPlugin; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; /** * @author gengxin.wugx 2011-9-21 下午03:21:45 * @goal maven-plugin-test */ public class MavenPluginTest extends AbstractMojo { public void execute() throws MojoExecutionException { getLog().info("Empty Maven2"); } }
这边要注意的地方有三点
(1)、继承AbstractMojo类
(2)、实现execute()方法
(3)、添加@goal annotation表示goal名字,在编译命令时需要使用到
4、mvn clean install编译打包到本地库
5、手动将plugin包添加到本地maven库
有时需要手动将plugin包导入本地库,可使用如下命令,对于大多数情况此步并不需要
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
其中Dfile为插件包的全路径
DgroupId、DartifactId、Dversion都已在pom中指定
Dpackaging为plugin包的后缀及Dfile文件的后缀
6、运行插件的命令
现在需要对另一个项目用上述插件,可使用如下命令
mvn com.alibaba.b2b.platform.qp:MavenPlugin:1.0.0:maven-plugin-test
mvn 加包名:类名:版本号:goal名
版本号不可缺少,为pom文件中指定
goal名为继承自AbstractMojo类的@goal annotation
参考:
http://www.sonatype.com/books/mvnref-book/reference/writing-plugins-sect-custom-plugin.html
http://maven.apache.org/guides/plugin/guide-java-plugin-development.html