Articles14
Tags12
Categories3
好用常用人人都要会的最基本的Maven插件收集

好用常用人人都要会的最基本的Maven插件收集

把手上的好几个项目的pom整理了一遍 规范了一下model 整理出了一些插件 方便新手们入门maven

好用常用人人都要会的最基本的Maven插件收集

大部分的插件其实都可以从MAVEN官方的可用插件列表中直接找到
在这里取了比较常用并且实用的几个插件做一点说明
大多数使用场景无非是:

  • 要自定义打包的名称
  • 要将打包后的jar包自动复制到某处
  • 要将外置lib目录和maven依赖一起打进去
  • 要根据环境复制对应的配置文件

这里选出的插件足以应对大部分情况了

Maven依赖管理插件maven-dependency-plugin

主要用于管理依赖,比如引入某个特殊的jar包,或者从某个jar包中提取文件
tree命令和display-ancestors命令在搭建工程时是比较好用的,可以很方便的找出重复依赖项,保证依赖版本一致

常用功能

  • list 列出的依赖关系
  • tree 以树型结构列出的依赖关系
  • copy-dependencies 拷贝某个依赖项
  • unpack-dependencies 解包某个依赖项
  • display-ancestors 显示所有父依赖

Maven构建小助手 build-helper-maven-plugin

主要用于为POM生成各种属性,比如打包时间、IP地址之类的,功能比较多就不上代码了。

常用功能

  • add-source 将更多source目录添加到POM
  • add-test-source 将更多test source目录添加到POM
  • add-resource 将更多resource directories目录添加到POM
  • add-test-resource 将更多test resource directories目录添加到POM
  • attach-artifact Attach additional artifacts to be installed and deployed. 不知道???干啥的
  • maven-version 获取Maven核心版本
  • regex-property 使用正则生成某个属性
  • regex-properties使用正则生成属性
  • released-version Resolve the latest released version of this project.
  • parse-version Parse the version into different properties.
  • remove-project-artifact 用于在构建过程中删除某个作为依赖的项目以节省空间
  • reserve-network-port 保留一个未使用的端口号的随机列表
  • local-ip 获取当前主机IP
  • cpu-count 获取当前主机CPU核心数
  • timestamp-property 生成一个事件放入指定属性中 常用于在包名上附加打包时间
  • uptodate-property 检查某个属性根据检查结果设置其他属性
  • uptodate-properties 检查多个属性根据检查结果设置多个其他属性
  • rootlocation 重定义多模块构建的根目录

复制并重命名插件 Copy Rename Maven Plugin

功能字如其名,就是用来复制和重命名的,可以用来复制打包好的jar包,也可以在打包过程中复制文件。

常用功能

  • copy 复制
  • rename 重命名
  • 没了

一个小栗子

<plugin>
    <groupid>com.coderplus.maven.plugins</groupid>
    <artifactid>copy-rename-maven-plugin</artifactid>
    <version>1.0</version>
    <executions>
        <execution>
            <id>copy-file</id>
            <phase>package</phase>
            <goals>
                <goal>copy</goal>
            </goals>
            <configuration>
                <sourcefile>target/$&#123;project.build.finalName&#125;.jar</sourcefile>
                <destinationfile>/xingyi/$&#123;project.build.finalName&#125;.jar</destinationfile>
            </configuration>
        </execution>
    </executions>
</plugin>

Maven编译插件 maven-compiler-plugin

主要用于设定编译环境和编译器的属性,是比较基础的插件

 <plugin>
    <groupid>org.apache.maven.plugins</groupid>
    <artifactid>maven-compiler-plugin</artifactid>
    <version>3.8.0</version>
    <configuration>
        <!-- 一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行(对于低版本目标jdk,源代码中不能使用低版本jdk中不支持的语法 ),会存在target不同于source的情况 -->
        <!-- 源代码使用的JDK版本 -->
        <source>1.8</source>
        <!-- 需要生成的目标class文件的编译版本 -->
        <target>1.8</target> 
        <!-- 字符集编码 -->
        <encoding>UTF-8</encoding>
        <verbose>true</verbose>
        <showwarnings>true</showwarnings>
        <!-- 要使compilerVersion标签生效,还需要将fork设为true,用于明确表示编译版本配置的可用 -->
        <fork>true</fork>
        <!-- 指定插件将使用的编译器的版本 -->
        <compilerversion>1.5</compilerversion>
        <!-- 编译器使用的初始内存 -->
        <meminitial>128m</meminitial>
        <!-- 编译器使用的最大内存 -->
        <maxmem>512m</maxmem>
        <!--使用指定的javac命令,例如:<executable>$&#123;JAVA_1_4_HOME&#125;/bin/javac</executable> -->
        <executable><!-- path-to-javac --></executable>
        <!-- 跳过测试 -->
        <skiptests>true</skiptests>
        <!-- 这个选项用来传递编译器自身不包含但是却支持的参数选项-->
        <compilerargument>-verbose -bootclasspath $&#123;java.home&#125;\lib\rt.jar</compilerargument>
    </configuration>
</plugin>

SpringBootMaven插件spring-boot-maven-plugin

configuration.layout=ZIP 的用处

资料
作用

将该工程的布局改为ZIP布局,所有的lib将外置到jar包外,在打包时将com.example:demo下的所有依赖放入外置的lib目录

    <build>
      <plugins>
        <plugin>
          <groupid>org.springframework.boot</groupid>
          <artifactid>spring-boot-maven-plugin</artifactid>
          <configuration>
            <layout>ZIP</layout>
          </configuration>
          <includes>
            <include>
                   <groupid>com.example</groupid>
                <artifactid>demo</artifactid>
            </include>
          </includes>
        </plugin>
      </plugins>
    </build>
Author:Daizc
Link:http://yoursite.com/2019/03/11/%E5%A5%BD%E7%94%A8%E5%B8%B8%E7%94%A8%E4%BA%BA%E4%BA%BA%E9%83%BD%E8%A6%81%E4%BC%9A%E7%9A%84%E6%9C%80%E5%9F%BA%E6%9C%AC%E7%9A%84Maven%E6%8F%92%E4%BB%B6%E6%94%B6%E9%9B%86/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可