构建工具之Maven的使用(一)
一、前言
对于开发一个Java项目,上线之前会通过编译,测试,打包,部署这几个构建过程,如果文件较少,我们可以使用java-->javac-->jar这些命令去完成上述的构建流程。但是当工程越来越大,文件越来越多。Java原生的命令就显得捉襟见肘,力不存心了。Maven基于POM管理jar包依赖,通过自身的生命周期实现项目的构建流程。具体构建原理可自行百度/谷歌。本文主要为大家分享一些比较实用的maven使用技巧。
二、配置技巧
1. 多办公环境开发配置技巧
在公司办公时,依赖包加载会用公司的私服;在家办公时,依赖包加载会用阿里/网易等国内镜像。办公环境切换时,我们想通过简单的方式切换,而不是每次都更改maven的settings配置文件,怎么办呢?可参考如下方案:
<settings>
<profile>
<id>company</id>
<repositories>
<repository>
<id>nexus</id>
<name>nexus-repositories</name>
<url>http://xxxx.xxxx.xxx:xxxx/nexus/content/repositories</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
<profile>
<id>home</id>
<repositories>
<repository>
<id>aliyun</id>
<name>central</name>
<url>https://maven.aliyun.com/repository/central</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
</profile>
<activeProfiles>
<activeProfile>company</activeProfile>
<activeProfile>home</activeProfile>
</activeProfiles>
</settings>
配置完之后,idea会在侧边栏出现可选框,点击相应的办公环境即可,再次打包即可。
如下图:

2. 构建日志输出配置技巧
打包时,我们会注意到构建日志会输出到屏幕,如果工程比较大,相应的大量日志也会输出。那有没有办法可以调整输出的日志级别的,答案是有的,可参考下面的三种方案:
- 编辑mvn执行文件 ${MAVEN_HOME}/bin/mvn 新增一行配置
MAVEN_OPTS="-Dorg.slf4j.simpleLogger.defaultLogLevel=warn"
- maven安装目录下:conf/logging/simplelogger.properties 修改输出日志级别
org.slf4j.simpleLogger.defaultLogLevel=warn
- 在执行mvn命令的时候使用参数 -q,不过这样只能输出error信息
mvn clean package -DskipTests -q
3. 文件过滤打包配置技巧
我们有时希望maven打包时只把某些资源文件打入jar包,而并不是所有的文件,此时我们可以在POM文件做如下配置:
<!--配置Maven 对resource文件 过滤 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<!-- 打包时,只加载aa.properties和bb.xml -->
<includes>
<include>**/aa.properties</include>
<include>**/bb.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
4. 离线开发的配置技巧
有时处于安全考虑我们需要在断网的环境下进行开发,例如生产环境。此时不能连接外网依赖如何加载呢?如何进行开发呢?maven提供了离线模式,前提是需要将下载好依赖包上传到内网环境并安装maven等相关工具,可参考如下两种方案:
- 在 settings.xml中进行更改 在第一个标记中添加

<localRepository>~/.m2/repository</localRepository>
<offline>true</offline>
使用mvn clean package -DskipTests=true进行打包
- 在pom文件中指定本地仓库

<repositories>
<repository>
<id>local</id>
<name>local Repository</name>
<url>file://${project.basedir}/.m2/repository</url>
</repository>
</repositories>
使用mvn -o clean install -DskipTests=true进行打包
三、总结
以上就是今天大狮兄和大家分享的关于maven配置相关的内容,包含多办公环境切换的配置、构建日志输出的配置、打包文件过滤的配置、离线开发的配置。文章观点或者结论亦或其他如有错误,欢迎大家评论或者私信进行斧正。同时如果此篇文章对大家有所帮助,也欢迎大家点赞、收藏、关注。
构建工具之Maven的使用(一)的更多相关文章
- 高效使用Java构建工具,Maven篇|云效工程师指北
大家好,我是胡晓宇,目前在云效主要负责Flow流水线编排.任务调度与执行引擎相关的工作. 作为一个有多年Java开发测试工具链开发经验的CRUD专家,使用过所有主流的Java构建工具,对于如何高效使用 ...
- 项目自动构建工具对比(Maven、Gradle、Ant)
Java世界中主要有三大构建工具:Ant.Maven和Gradle.经过几年的发展,Ant几乎销声匿迹.Maven也日薄西山,而Gradle的发展则如日中天. Maven的主要功能主要分为5点,分别是 ...
- 01_自动化构建工具之Maven
目前技术中存在问题(为什么使用Maven): 一个项目就是一个工程: 缺陷:如果项目太过庞大,就不适合使用package来划分层次,最好是一个模块就是一个工程,利于分工协作. 解决:Maven可以将一 ...
- Java项目工程化之项目构建工具Maven
欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...
- 学习笔记——Maven实战(六)Gradle,构建工具的未来?
Maven面临的挑战 软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你就会发现曾经大红大紫的技术已经成为了昨日黄花,当然,Maven也不会例外.虽然目前它基本上是Java构建的事实标准,但我们 ...
- Java构建工具:如何用Maven,Gradle和Ant+Ivy进行依赖管理
原文来自:https://zeroturnaround.com/rebellabs/java-build-tools-how-dependency-management-works-with-mave ...
- 项目管理及自动构建工具Maven
项目管理及自动构建工具Maven 一.Maven安装.目录结构.cmd命令1.下载安装apache-maven-3.2.3-bin.zip下载:http://maven.apache.org/down ...
- 构建工具maven
构建工具maven =UTF-8''Gradle Effective Implementation Guide.pdf: http://www.t00y.com/file/76854506 b ...
- Java 中三大构建工具:Ant、Maven和Gradle
Java世界中主要有三大构建工具:Ant.Maven和Gradle 目前:Ant已经销声匿迹.Maven也没落了,而Gradle的发展则如日中天. Maven的主要功能主要分为5点,分别是依赖管理系统 ...
随机推荐
- Zookeeper:Windows下Zookeeper启动zkServer.cmd闪退问题
Zookeeper在Windows下启动只需要运行zkServer.cmd双击即可(需保证运行环境中正确安装了Java运行环境) 但是在有的时候会出现双击闪退的情况.针对闪退,可按照如下方法进行解决: ...
- springboot项目启动,停止,重启
参考博客 https://www.cnblogs.com/c-h-y/p/10460061.html 打包插件,可以指定启动类 <build> <plugins> <pl ...
- 《基于JQuery和CSS的特效整理》系列分享专栏
<基于JQuery和CSS的特效整理>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201724.html 文章 一款基于jQue ...
- bugku Crypto 下半部分wp
1. 百度托马斯这个人居然还发明了一种轮转的加密法,发现原理是,他将很多行乱序的26个字母,插到一根柱子上,参考糖葫芦的样子,可以旋转每一行,设置自己要发送的明文后,向对方发送乱码的一列,对方只要将这 ...
- IDEA+Hadoop2.10.1+Zookeeper3.4.10+Hbase 2.3.5 操作JavaAPI
在此之前要配置好三节点的hadoop集群,zookeeper集群,并启动它们,然后再配置好HBase环境 本文只是HBase2.3.5API操作作相应说明,如果前面环境还没有配置好,可以翻看我之前的博 ...
- ADC电阻分压采集相关知识
1.电池串联可以增加电压,电池并联可以增加电流,都是为了增加电功率.但是电池不宜并联,即使是相同规格的电池,如果消耗不同,电势就会不同,会造成电池之间的放电现象. 2.电阻的作用: 限流:为使通过用电 ...
- C语言代码段
/* 功 能:将str字符串中的oldstr字符串替换为newstr字符串 * 参 数:str:操作目标 oldstr:被替换者 newstr:替换者 * 返回值:返回替换之后的字符串 */ char ...
- 「BZOJ2839」集合计数
「BZOJ2839」集合计数 题目大意: 一个包含 \(n\) 个数的集合有 \(2^n\) 个子集,从这些子集中取出若干个集合(至少一个),使他们的交集的元素个数恰好为 \(k\),求方案数,答案对 ...
- [刘阳Java]_第一个Java程序_第7讲
1. 其实第一个Java程序是很简单,但是当自己编写第一个Java程序时候需要注意如下几个内容: 理解Java程序的运行环境 校验你的Java环境变量是否能够运行你所写的第一个Java程序 理解Jav ...
- 【剑指offer】27. 二叉树的镜像
剑指 Offer 27. 二叉树的镜像 知识点:二叉树:递归:栈 题目描述 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 示例 输入:root = [4,2,7,1,3,6,9] 输出:[4, ...