Maven插件

查看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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值