1、常用插件
具体常用的有以下这些:
- findbugs 静态代码检查
- versions 统一升级版本号
mvn versions:set -DnewVersion=1.1 - source 打包源代码
- tomcat
2、自定义插件
文档
https://maven.apache.org/guides/plugin/guide-java-plugin-development.html
实现自定义扫描项目中java文件个数
- a)、建立一个maven项目,将packaging改成plugin
<!-- 将打包形式改为plugin -->
<packaging>maven-plugin</packaging>
- b)、引入plugin的依赖包
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.6.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
- c)、创建继承AbstractMojo的类,并重写execute()方法,具体的代码我已上传我的github
@Mojo(name = "findtype", defaultPhase = LifecyclePhase.PACKAGE)
public class ZJYMojo extends AbstractMojo {
/**
* 默认读project下src文件下的文件
*/
@Parameter(property = "project.directory")
private String path;
/**
* 默认判断文件类型是java
*/
@Parameter(property = "type", defaultValue = "java")
private String type;
public void execute() throws MojoExecutionException, MojoFailureException {
System.out.println("xiaoyuan define plugin " + path);
// 读取路径下的java文件个数
// 递归实现
System.out.println(type + " Files' number in project (Recursive)" + readRecursive(path, ".*?\\."+ type +"$"));
// 非递归实现
System.out.println(type + " Files' number in project " + read(path, ".*?\\."+ type +"$"));
}
// 递归实现某路径下 存在regex字符串的文件个数
private int readRecursive(String path, String regex) {}
// 非递归实现某路径下 存在regex字符串的文件个数
private int read(String path, String regex) {}
}
- d)、mvn clean install 打包,在别的项目引用它
<plugins>
<plugin>
<groupId>com.xiaoyuan</groupId>
<artifactId>yuan-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<configuration>
<!--配置传给插件的参数-->
<path>${basedir}</path>
</configuration>
<!--挂载在package时运行-->
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>xiaoyuan</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
-
e)、别的项目使用时 mvn yuan:findtype -Dproject.directory=${basedir}(必填) -Dtype=properties(选填,默认是java)