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 ...
随机推荐
- 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案
var threeSumClosest = function(nums, target) { let ans = nums[0] + nums[1] + nums[2]; const len = nu ...
- ElementUI实现手动上传
在做项目中,与同事遇到问题,顺手记录一下 <template> <div class="common-layout"> <el-button size ...
- vue 在 v-for 时给每项元素绑定事件需要用事件代理吗?为什么?
vue本身不做事件代理(react将所有事件都委托到document上,然后进行派发) 普通html元素和在组件上挂了.native修饰符的事件.最终EventTarget.addEventListe ...
- Oracle数据库简单常用语句
简单常用语句: 登录超级用户 sqlplus / as sysdba; 登录普通用户 connect username/password; 显示当前用户名 show user; 查询所有用户名 sel ...
- 「DIARY」PKUSC 2021 游记
冬令营没了但是还有夏令营 (完蛋,前两天忘写游记了,完全没想起来--最后一天补一补) 试题分析在另外一篇博客上 # Day 0 早上去机场的时候把手机落在出租车上了 (还好之后找回来了),导致我前两天 ...
- 高级纹理以及复杂而真实的应用——ShaderCp10
--20.9.7 这章主要分成三个部分 立方体纹理(cubemap) 渲染纹理(RenderTexture,rt) 和程序纹理 一.立方体纹理 立方体纹理顾名思义是一种三维的纹理形状类似于立方体,由六 ...
- ssh scp 相关
1. 设置ssh 的免密登录 1> 将 ~/.ssh/id_rsa.pub文件中的内容拷贝到 远程host的 ~/.ssh/authorized_keys文件中 2> ssh-copy-i ...
- impdp,depdp 常用参数
转载于:https://www.cnblogs.com/halberd-lee/p/7807032.html 1 导数据注意事项 检查数据库版本(用于决定导出时生成为哪个版本的dmp头文件) sele ...
- MySQL错误合集
Error Code: 1052. Column 'Sno' in field list is ambiguous ambiguous意味含糊不清,常见于多个表中有相同名字的属性,在查询时需要分别说明 ...
- texstudio设置外部浏览器及右侧预览不能使用问题
刚装的texstudio,今天不知什么原因右侧显示的pdf文件一直是以前的,百度了下没找到,自己摸索了下,只需要把构建里面pdf查看器更改下即可 如果想更改外部pdf查看器,只需要设置下命令里面外部p ...