maven插件汇总
编译Java源码,一般只需设置编译的jdk版本
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
source: 源代码编译版本;
target: 目标平台编译版本;
encoding: 字符集编码。
自动打包源代码,用户可以根据需要将任何插件目标绑定到任何生命周期的阶段,
如:将maven-source-plugin的jar-no-fork目标绑定到default生命周期的package阶段,这样,以后在执行mvn package命令打包项目时,在package阶段之后会执行源代码打包
execution下可配置phase属性, 意思是在什么阶段打包源文件。如<phase>install</phase>:在执行mvn install时打包源代码
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<id>attach-sources</id>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
Maven项目使用flatten-maven-plugin对发布的POM进行精简
使用maven开发的模块化应用,各种项目都具有多模块设置,但是通常希望同一项目的模块之间的依赖关系使用最新版本.使用flatten-maven-plugin
,您可以在统一的一个地方定义版本,如parent/pom.xml 中。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>1.2.2</version>
<configuration>
<updatePomFile>true</updatePomFile>
<flattenMode>resolveCiFriendliesOnly</flattenMode>
</configuration>
<executions>
<execution>
<id>flatten</id>
<phase>process-resources</phase>
<goals>
<goal>flatten</goal>
</goals>
</execution>
<execution>
<id>flatten.clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
这个插件的作用是,生成一个压缩版的pom.xml文件,然后在install
和deploy
阶段使用压缩后的pom.xml文件,替换原来的pom.xml文件,具体压缩策略如下:
- 和构建有关的元素会被删除;
- 和开发有关的元素默认会被删除;
- 只包含构件的使用者必须的一些信息;
- 变量会被解析;
- 上级关系会被解析,然后被压缩删除;
- 构建时实际使用的profile会被评估,视情况处理;
- 由JDK或者OS驱动的profile会被保留,需要时可以动态地控制依赖。
在默认的压缩逻辑下,插件如何处理各种元素,可以看这里。 下面会重点介绍如何通过各种参数来控制压缩的过程:
属性名 | 类型 | 描述 |
---|---|---|
embedBuildProfileDependencies |
Boolean |
由OS或者JDK的不同而触发的profile,可能根据环境的不同而产生不同的依赖,但是由属性等触发的profile,就不确定了,如果属性设置为true ,profile中的依赖会直接写入生成的pom中,如果设置为false ,所有的profile信息都会保留,默认是false 。 |
flattenMode |
FlattenMode |
插件预定义了若干种压缩模式,下面会详述。 |
flattenedPomFilename |
String |
生成的压缩后的pom.xml文件的文件名,默认为.flattened-pom.xml 。 |
outputDirectory |
File |
生成的压缩后的pom.xml文件的存放位置,默认为${project.basedir} 。 |
pomElements |
FlattenDescriptor |
该元素定义了如何处理额外的元素,如果可能,尽量使用flattenMode ,这个元素仅仅用于进一步提高灵活性,它可以控制具体的某个元素是保留还是删除,比如要指定删除repositories ,可以这样:<pomElements><repositories>flatten</repositories></pomElements> 。 |
updatePomFile |
Boolean |
插件默认只会处理packaging 属性为非pom 的,如果要处理packaging 为pom 的,可将本属性值设置为true 。 |
插件预定义了若干种模式,可以满足若干种常见的场景,这些模式定义在org.codehaus.mojo.flatten.FlattenMode
枚举中,具体可以看代码,本文简单描述如下:
模式 | 描述 |
---|---|
minimum |
不推荐使用,会展开pluginRepositories 。 |
bom |
会保留dependencyManagement ,展开properties 。 |
oss |
推荐开源项目使用,会展开ciManagement 、contributors 、distributionManagement 、inceptionYear 、issueManagement 、mailingLists 、organization 、prerequisites |
ossrh |
会展开name 、description 、url 、scm 、developers |
defaults |
会展开repositories |
clean |
删除全部可选元素 |
maven-deploy-plugin一般用于将项目发布到远程仓库
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<configuration>
<skip>true</skip> true标识跳过该模块
</configuration>
</plugin>
</plugins>
maven-resources-plugin用来处理资源文件。
<build>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-dto</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal> -- copy资源
</goals>
<configuration>
<outputDirectory>${basedir}/src/main/java/dto</outputDirectory> --basedir:根路径,一般是当前项目名字。将资源复制到当前路径
<resources>
<resource>
<directory>../license-common/src/main/java/dto</directory>
<includes>
<include>**/*.java</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</build>
Maven Enforcer plugin
Enforcer插件提供了控制某些环境约束的目标,例如Maven版本、JDK版本和操作系统系列,以及更多的内置规则和用户创建的规则。
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.4.1</version>
<executions>
<execution>
<id>enforce-rules</id>
<goals>
<goal>enforce</goal>
</goals>
<phase>validate</phase>
<configuration>
<rules>
<requireJavaVersion>
<message>
<![CDATA[You are running an older version of Java. This application requires at least JDK ${java.version}.]]>
</message>
<version>[1.8,)</version> --要求java版本1.8以上
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
maven插件汇总的更多相关文章
- 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)
前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...
- 安装eclipse的maven插件
我们团队用maven来管理项目需要的库文件,其实以前都没听过maven,第一次接触这个,师兄要我直接去装下这个,开始以为还挺简单的,没想到中间遇到了一些小麻烦,现在把我成功安装maven的过程分享下, ...
- eclipse内下载及配置maven插件(转)
本文介绍Maven的安装和配置,同样适用于eclipse 1.首先需要安装jdk,eclipse(废话!). 然后到maven官网下载maven,http://maven.apache.org/dow ...
- (十三)Maven插件解析运行机制
这里给大家详细说一下Maven的运行机制,让大家不仅知其然,更知其所以然. 1.插件保存在哪里? 与我们所依赖的构件一样,插件也是基于坐标保存在我们的Maven仓库当中的.在用到插件的时候会先从本地仓 ...
- java使用tomcat7的maven插件发布到服务器
服务器容器使用tomcat7的maven插件,使用该插件不需要使用tomcat服务器.以下示例均以paycore项目为例. 一.使用tomcat7-maven-plugin 首先在主pom(payco ...
- MyBatis Generator作为maven插件自动生成增删改查代码及配置文件例子
什么是MyBatis Generator MyBatis Generator (MBG) 是一个Mybatis的代码生成器,可以自动生成一些简单的CRUD(插入,查询,更新,删除)操作代码,model ...
- 【Maven】Eclipse安装Maven插件后导致Eclipse启动出错
本文纯属复制粘贴:具体请参照原文: Eclipse安装Maven插件后,Eclipse启动问题:Maven Integration for Eclipse JDK Warning. 解决方法: 1. ...
- 在eclipse的maven插件中搜寻本地仓库中的jar搜索不到的解决方案
在eclipse的maven插件中搜寻本地仓库中的jar搜索不到的解决方案 之前,用过maven管理项目的童鞋都知道本地会有一个${User_Home}.m2/repository仓库 是用来存放ja ...
- 为maven插件设置参数的三种方法
很多的maven插件都提供了丰富的可选参数,用户可以通过设置特定的参数值来控制maven插件的行为.设置插件参数的方法主要有三种,分别是命令行设置,POM文件中为插件设置全局参数和POM文件中为插件设 ...
- eclipse安装svn和maven插件以及m2e-extras
相关介绍: 1.SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Su ...
随机推荐
- javaProject
import java.io.*; public class Print{ public static void main(String[] args) throws IOException { // ...
- Linux - 查看、修改、更新系统时间(自动同步网络时间)
系统:Centos7 1.查看系统时间 执行 date 命令可以查看当前系统的时间: 执行 hwclock 命令可以查看当前系统的时间 2.手动修改系统时间 (1)执行如下命令可以设置一个新的系统时间 ...
- 树莓派4B安装Gogs
https://www.labno3.com/2021/01/28/how-to-install-gogs-on-the-raspberry-pi/ https://gogs.io/docs/inst ...
- vue中v-if与v-show区别
vue中显隐方法常用两种,v-show和v-if,但这两种是有区别的. v-if v-if 控制元素显示或隐藏是把dom元素整个的渲染或者删除,如果删除,也就是页面中不存在这个dom元素,以此达到隐藏 ...
- mysql常规主从复制跟基于GTID的主从复制方法
一,环境部署 192.168.113.129 193.168.113.130 二进制部署mysql5.7的方法见mysql5.7二进制部署,以及部分优化参数 二,mysql基于二进制日志点的复制 1, ...
- 实验:笔记本电脑做桥接有线网络,笔记本通过wifi连手机热点,,硬件通过笔记本的有线网口上网
1.问题 我们需要做实验,将我们设计的W5500实验板上internet, 搭建环境比较麻烦. 1)学校上网需要先HTTP认证: 2)家里经常路由器固定位置,没有足够长的网线: 3)有时候需要临时搭 ...
- 策略模式demo
/** StrategyContext. */ public class StrategyContext { private Strategy strategy; // 传入的是Strategy的实现 ...
- c++实现单链表及常用方法实现
来自https://blog.csdn.net/h294455907/article/details/80223345 这篇博客,做了一点小改动,用一个cpp实现的 #include<iostr ...
- element table合计行自定义及单元格合并
问题:项目需求要求table下面加合计一行 图片展示: 代码示例: TEMPLATE: span-method是自定义table单元 show-summary是展示合并行 summary-meth ...
- hbuliter x 连接雷电模拟器
adb 路径 E:\HBuilderX\plugins\launcher\tools\adbs 也可以配置环境变量 配置环境变量:将adb.exe所在路径,放在Path中计算机(右键)→属性→高级系 ...