暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

常用Maven插件

程序员升级之路 2021-09-20
824

Maven现在是Java开发依赖包管理的标准了,大部分人可能都只会熟悉

编写dependency标签,而真正编译,打包都是通过插件来完成的,这篇文章整理下工作中用的比较多的Maven插件,更详细的Maven插件请参考官网:https://maven.apache.org/plugins/index.html。 



一、标准插件

1、clean

清除编译好的包,一般和其它插件一起用,如mvn clean install



2、compiler

编译源码;


可通过compilerVersion属性设置JDK版本

    <configuration>
    <compilerVersion>1.8</compilerVersion>
    </configuration>
    复制

    还可设置源码版本和目标字节码的版本:

      <configuration>
      <source>1.8</source>
      <target>1.8</target>
      </configuration>
      复制


      还可以通过arg来传递参数:

        <configuration>
        <compilerArgs>
        <arg>-verbose</arg>
        <arg>-Xlint:all,-options,-path</arg>
        </compilerArgs>
        </configuration>
        复制

        3、deploy

        部署到远程仓库中,一般不用设置什么参数;


        4、failsafe

        JUnit集成测试


        5、install

        安装到本地仓库


        6、resources

        拷贝资源到输出目录中;

        可通过resources.resource.directory指定额外要打包的资源;

          <resources>
          <resource>
          <directory>src/my-resources</directory>
          </resource>
          </resources>
          复制


          还可设置字符集:

            <configuration>
               <encoding>UTF-8</encoding>
            </configuration>
            复制


            7、site

            生成站点,还可启动一个web服务器进行浏览;

            常用属性有port和tempWebappDirectory

              <configuration>
              <port>9000</port>
              <tempWebappDirectory>${basedir}/target/site/tempdir</tempWebappDirectory>
              </configuration>
              复制


              8、verifier

              用于集成测试


              9、surefire

              运行单元测试


              常用参数有:argLine,给单元测试设置参数;

                <configuration>
                  <argLine>-Djava.security.manager -Djava.security.policy=${basedir}/src/test/resources/java.policy</argLine>
                </configuration>
                复制


                还可以并行测试

                   <configuration>
                  <parallel>methods</parallel>
                    <threadCount>10</threadCount>
                   </configuration>
                  复制



                  二、surefire-report

                  生成测试报告;


                  常用参数有:

                  outputDirectory:报告生成目录

                     <configuration>
                         <outputDirectory>${basedir}/target/newsite</outputDirectory>
                     </configuration>
                    复制


                    三、jacoco

                    生成代码覆盖率报告;

                    官网地址:https://www.eclemma.org/jacoco/trunk/doc/maven.html


                    具体使用如下:

                    1、引入依赖:

                      <plugin>
                      <groupId>org.jacoco</groupId>
                      <artifactId>jacoco-maven-plugin</artifactId>
                      <version>0.8.8-SNAPSHOT</version>
                      </plugin>
                      复制


                      2、配置插件

                        <project>
                        <reporting>
                        <plugins>
                        <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <reportSets>
                        <reportSet>
                        <reports>
                        <!-- select non-aggregate reports -->
                        <report>report</report>
                        </reports>
                        </reportSet>
                        </reportSets>
                        </plugin>
                        </plugins>
                        </reporting>
                        </project>
                        复制

                        它定义了不同的goal,最常用的是prepare-agent和report。 


                        如果想查看增量覆盖率,可通过工具diff-cover处理,这是一个Python脚本,需要先安装Python相关环境;


                        四、assembly插件

                        主要作用是制作项目分发包,包中包含了项目的可执行文件、源代码等等。支持用的文件格式:zip、tar.gz、jar 和 war 等;


                        五、archetype插件

                        用于生成项目骨架;

                        直接执行以下命令就可以生成项目框架:

                          mvn archetype:generate
                          复制


                          多机房RPC调用实践

                          Raft算法之日志篇

                          扩展Redis:增加Redis命令

                          文章转载自程序员升级之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                          评论