查看Maven插件的网址:
https://maven.apache.org/plugins/
http://www.mojohaus.org/plugins.html
文章目录
1.常用的插件
1.1 findbugs 静态代码检查,可以检查代码中的bug
步骤一:在你需要做代码bug检查的pom文件添加下面配置
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<threshold>High</threshold>
<effort>Default</effort>
<findbugsXmlOutput>true</findbugsXmlOutput>
<!-- findbugs xml 的输出路径 -->
<findbugsXmlOutputDirectory>target/site</findbugsXmlOutputDirectory>
</configuration>
</plugin>
</plugins>
</build>
步骤二:在IDEA右侧可以看到findbugs插件,执行findbugs:findbugs查找bug;然后再执行findbugs:gui就可以通过图形化的界面看你代码中具体的bug
1.2 统一修改整个项目的版本号
说明:在父级pom文件中,加入versions插件配置,然后在linux或IntelliJ IDEA中执行修改版本号的命令,这样就不用分别去修改每一个module的pom文件了
步骤一:在父pom文件中加入
<build>
<plugins>
<plugin>
<!-- https://mvnrepository.com/artifact/org.codehaus.mojo/versions-maven-plugin -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.7</version>
</plugin>
</plugins>
</build>
步骤二:
修改版本号命令:mvn versions:set -DnewVersion=1.1-SNAPSHOT
1.3 打包源代码
这个插件会在mvn install 的时候把源代码的包一起打包(java文件包);一般对外不要提供源代码的包,只提供编译后的(class文件包)即可。
例如:
Demo-1.1-SANPSHOT.jar //这个只有class文件,看不到源代码
Demo-1.1-SANPSHOT-sources.jar //这个是源代码,可以看到你写的java文件,一般把这个连个jar包放到同一个路径下
同样我们平时下载的spring的文件看到的都是class文件,也不能看到注释,但是通过下面的配置我们可以在每打开一个class文件,下载需要的源代码从而看到里面的注释内容
<!--pom 文件插件配置-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<id>attach-sources</id>
<phase>install</phase> <!-- 表示在install,也就是打包的时候执行 -->
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
1.4 assembly 打包zip、war,可以执行jar包等
assemble可以自定义生成相关的包,可以看官网资料
参考:http://www.cnblogs.com/hafiz/p/6538107.html
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<archive>
<manifest>
<!--运行jar包时运行的主类,要求类全名-->
<mainClass>com.vison.Test</mainClass>
<!-- 是否指定项目classpath下的依赖 -->
<addClasspath>true</addClasspath>
<!-- 指定依赖的时候声明前缀 -->
<classpathPrefix>./lib/</classpathPrefix>
<!--依赖是否使用带有时间戳的唯一版本号,如:xxx-1.3.0-20121225.012733.jar-->
<useUniqueVersions>false</useUniqueVersions>
</manifest>
</archive>
</configuration>
</plugin>
<!-- 配置依赖插件,把上面主类运行的依赖也全部打包起来,不然会出现依赖不存在-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
最后执行命令:java -jar 包名 就会执行这个jar包。普通打包是不会执行的。
1.5 Tomcat插件
可以集成一个Tomcat,不用单独下载了。通过下面的方式配置端口号和根路径
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/</path>
</configuration>
</plugin>
2.自定义编写插件
官网可以学习参考:
https://maven.apache.org/guides/plugin/guide-java-plugin-development.html
2.1 自定义插件编写
- 1.新建一个空的maven项目,把pom.xml中 打包改成maven-plugin
- 2.引入maven-plugin的依赖包
- 3.编写插件类需要继承AbstractMojo类
- 4.mvn install 打包
相关源代码文件:
<!-- pom文件 -->
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.vison</groupId>
<artifactId>vison-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>maven-plugin</packaging>
<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.5</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
//Java类插件实现
package com.vison;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import java.util.List;
//这里的name 就是你的goal的名字(插件中配置的时候) ,设置默认是PACKAGE
@Mojo(name = "visonws",defaultPhase = LifecyclePhase.PACKAGE)
public class VisonMojo extends AbstractMojo {
@Parameter
private String msg; //配置的时候可以传递参数的
@Parameter
private List<String> options; //配置的时候可以传递list参数的
@Parameter(property="args") //property表示可以通过命令行传递参数
private String args;
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
System.out.println(" run vison plugin !!! "+msg);
System.out.println(" run vison plugin !!! "+options.toString());
System.out.println(" run vison plugin !!! "+args);
}
}
2.2 使用自定义插件
1)添加如下配置,可以执行插件,
<plugin>
<groupId>com.vison</groupId>
<artifactId>vison-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<configuration>
<!--msg 参数-->
<msg>jsjs</msg>
<!--list参数 map类似-->
<options>
<option>one</option>
<option>two</option>
</options>
</configuration>
</plugin>
2)上面的plugin配置后会生成对应的插件管理,双击vison:visonws就会执行你的程序
或者执行 mvn vison:visonws
但是上面的使用mvn install 并不会执行(虽然我们社会的生命周期使用的PACKAGE,因为我们的插件并没有挂在到mvn的生命周期中),需要修改为如下配置
3)使用mvn install 就会使用调用到我们自定义的插件了。
使用如下两个方式也可以传递出参数 args 是我们自定义的参数。
mvn install -Dargs=hello
mvn vison:visonws -Dargs=hello
<plugin>
<groupId>com.vison</groupId>
<artifactId>vison-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<configuration>
<!--msg 参数-->
<msg>jsjs</msg>
<!--list参数-->
<options>
<option>one</option>
<option>two</option>
</options>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>visonws</goal>
</goals>
</execution>
</executions>
</plugin>