官方参考资料页面:http://maven.apache.org/guides/plugin/guide-java-plugin-development.html
1. 用Maven Mojo Archetype生成一个简单的Maven Plugin工程,用下面的命令行
mvn archetype:create \ -DgroupId=sample.plugin \ -DartifactId=maven-hello-plugin \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DarchetypeArtifactId=maven-archetype-mojo
2. 在生成的Java代码的前面注释部份,修改phase与goal
/** * * * @goal generate //在此处修改goal * * @phase package //在此处修改phase */
通常用得比较多的是Phase是Default Lifecycle Bindings - Packaging ejb / ejb3 / jar / par / rar / war里的一些phases,如下
process-resources compile process-test-resources test-compile test package install deploy
3. 接着就是准备所需的参数,这些参数将在使用这个Maven plugin时由pom配置获得
/** * Location of the file. * @parameter expression="${project.build.directory}" * @required */ private File outputDirectory;
参数的注入是由普通的注释来标识,名字可以与字段名字一致,也可以设定experssion给变量取一个别名,以便于在pom配置和command line中使用它来传值,也可以通过default-value来指定默认值,还有就是指定@required来强制用户设定值
4. 然后就是插件实现部份,利于之前拿到的parameter值,进行操作
5. 调用plugin,下面是调用的样例
<profile> <id>appengine</id> <build> <plugins> <plugin> <groupId>org.javaui.maven.plugin</groupId> <artifactId>google-app-engine-maven-plugin</artifactId> <version>1.0-SNAPSHOT</version> <configuration> <outputDirectory>${project.build.directory}/appengine</outputDirectory> <staticFileDirectory>${project.build.directory}/${project.build.finalName}/${gwt.xml.path}/</staticFileDirectory> </configuration> <executions> <execution> <goals> <goal>generate</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </profile>
附一自定义插件样例源码