Why
现有官方插件已经满足不了当前需求,网上也没搜索到满意的插件。
How
1. 编写自定义插件,需要事先安装好Maven的环境。此处省略……
2. 用MAVEN创建一个新的项目
mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.1 -DgroupId=com.allen.test -DartifactId=weblogic-maven-plugin -Dpackage=maven-plugin 或者用集成了M2E的Eclipse创建
3. 修改pom.xml
加入maven-plugin的依赖
<dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> <version>3.0.3</version> </dependency>
4. 编写plugin的执行类
/**
* @goal info
* @phase compile
* @requiresProject false
*/
public class TestPlugin extends AbstractMojo {
/**
* @parameter expression="${str}"
* @required
*/
private String str;
/**
* @parameter expression="${label}"
* @required
*/
private String lable;
/**
*
* @parameter
*/
private float number;
/**
*
* @parameter
*/
private File file;
/**
*
* @parameter
*/
private URL url;
/**
*
* @parameter
*/
private String[] array;
/**
*
* @parameter
*/
private List<String> items;
/**
*
* @parameter
*/
private Map<String, String> map;
/**
*
* @parameter
*/
private Properties properties;
/**
*
* @parameter
*/
private V v;
public void execute() throws MojoExecutionException, MojoFailureException {
getLog().info("String is : str = " + str);
getLog().info("String is : lable = " + lable);
getLog().info("String is : number = " + number);
getLog().info("String is : file = " + file);
getLog().info("String is : url = " + url);
getLog().info("String is : array = " + Arrays.toString(array));
getLog().info("String is : items = " + items);
getLog().info("String is : map = " + map);
getLog().info("String is : properties = " + properties);
getLog().info("String is : v = " + v);
}
}
执行类需要继承org.apache.maven.plugin.AbstractMojo
实现execute执行方法
注释里面的内容是有意义的,Maven在编译时会获取这些内容,并实现相应的配置
@goal info:表示该插件的服务目标
@phase compile:表示该插件的生效周期阶段
@requiresProject false:表示是否依托于一个项目才能运行该插件
@parameter expression="${name}":表示插件参数,使用插件的时候会用得到
@required:代表该参数不能省略
5. 安装插件
把项目打成jar包, 打开terminal,进入到项目目录(有POM.XML的地方),输入mvn package
之后打包好的jar包会在target目录中
6.部署插件到本地repository
mvn install:install-file -DgroupId=com.allen.test -DartifactId=weblogic-maven-plugin -Dversion=1.0 -Dpackaging=jar -Dfile=${project_dir}/target/${jarFileName}
把${project_dir}换成你的真实目录
${jarFileName}换成你的jar名字
关键是要让maven找到你的jar
7. 测试你的插件
在terminal 中输入
mvn ${groupId}:${artifactId}:${goal} -Dstr=str -Dlabel=label
${groupId},${artifactId} 就是之前插件定义
或者在任一项目中引用
<plugin> <groupId>${groupdId}</groupId> <artifactId>${artifactId}</artifactId> <version>${version}</version> <executions> <execution> <goals> <goal>info</goal> </goals> <phase>compile</phase> </execution> </executions> <configuration> <str>fdsaf</str> <lable>123</lable> <number>3.15</number> </configuration> </plugin>