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 ...
随机推荐
- HttpWebResponse 四种accept-encoding解析(gzip, deflate, br,identity)
HttpWebResponse 四种accept-encoding解析(gzip, deflate, br,identity[默认]) var hwrs = (HttpWebRe ...
- vue provide inject 方法
上级组件: provide() { return { changeSelectOptions: this.changeSelectOptions, switchTabs: () => this. ...
- 前端电商 sku 的全排列算法
需求 需求描述起来很简单,有这样三个数组: let names = ["iPhone",'iPhone xs'] let colors = ['黑色','白色'] let stor ...
- Color the ball HDU - 1556 _差分
N名同学拍成一排,编号为1,2,3,4 -- N.现在有一位老师需要检查所有同学的出勤情况,他会进行点名,每次给出两个数a,b,并且保证a小于等于b,这个区间内的所有同学都会被点名一次,老师会进行N次 ...
- 常见DOS命令及应用
常见DOS命令使用 CMD打开方式 开始 + 系统 + 命令提示符 WIN键 + R 输入cmd + Enter WIN键 + R 输入cmd + Ctrl + Shift + Enter (管理员模 ...
- Burp Suite入门
Burpsuite Burp Suite是一个Web应用程序集成攻击平台,它包含了一系列burp工具,这些工具之间有大量接口可以互相通信,这样设计的目的是为了促进和提高整个攻击的效率.平台中所有工具共 ...
- Software--电商平台系统--P1 需求分析
2018-01-11 13:58:43 电商平台 需求 1. 网站的页面展示 页面的布局: Product Catalog (商品目录浏览功能): 首页显示"置顶" 商品: ...
- 【七侠传】冲刺阶段--Day7
[七侠传]冲刺阶段--Day7 团队成员 20181221曾宇涛 20181202李祎铭 20181209沙桐 20181215薛胜瀚 20181216杨越麒 20181223何家豪 20181232 ...
- 学校——DFS图的遍历
学校实验 没什么多说的 就是实现一个图的遍历 由于学校已经输入的片段过于晦涩难懂 无法进行 在网上看了别人写的代码 提升了理解代码的一点能力 #include"string.h" ...
- luogu 4142
费用流好题 本题的建图很有意思 正常我们看到棋盘问题应该先对整个棋盘黑白染色构成一个二分图,然后再考虑建图的问题 但是本题题目中已经明确区分了不同的斜线,问题在于怎么保证一个"L" ...