一、前言

对于开发一个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. 构建日志输出配置技巧

打包时,我们会注意到构建日志会输出到屏幕,如果工程比较大,相应的大量日志也会输出。那有没有办法可以调整输出的日志级别的,答案是有的,可参考下面的三种方案:

  1. 编辑mvn执行文件 ${MAVEN_HOME}/bin/mvn 新增一行配置
MAVEN_OPTS="-Dorg.slf4j.simpleLogger.defaultLogLevel=warn"
  1. maven安装目录下:conf/logging/simplelogger.properties 修改输出日志级别
org.slf4j.simpleLogger.defaultLogLevel=warn
  1. 在执行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等相关工具,可参考如下两种方案:

  1. 在 settings.xml中进行更改 在第一个标记中添加

<localRepository>~/.m2/repository</localRepository>
<offline>true</offline>

使用mvn clean package -DskipTests=true进行打包

  1. 在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的使用(一)的更多相关文章

  1. 高效使用Java构建工具,Maven篇|云效工程师指北

    大家好,我是胡晓宇,目前在云效主要负责Flow流水线编排.任务调度与执行引擎相关的工作. 作为一个有多年Java开发测试工具链开发经验的CRUD专家,使用过所有主流的Java构建工具,对于如何高效使用 ...

  2. 项目自动构建工具对比(Maven、Gradle、Ant)

    Java世界中主要有三大构建工具:Ant.Maven和Gradle.经过几年的发展,Ant几乎销声匿迹.Maven也日薄西山,而Gradle的发展则如日中天. Maven的主要功能主要分为5点,分别是 ...

  3. 01_自动化构建工具之Maven

    目前技术中存在问题(为什么使用Maven): 一个项目就是一个工程: 缺陷:如果项目太过庞大,就不适合使用package来划分层次,最好是一个模块就是一个工程,利于分工协作. 解决:Maven可以将一 ...

  4. Java项目工程化之项目构建工具Maven

    欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...

  5. 学习笔记——Maven实战(六)Gradle,构建工具的未来?

    Maven面临的挑战 软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你就会发现曾经大红大紫的技术已经成为了昨日黄花,当然,Maven也不会例外.虽然目前它基本上是Java构建的事实标准,但我们 ...

  6. Java构建工具:如何用Maven,Gradle和Ant+Ivy进行依赖管理

    原文来自:https://zeroturnaround.com/rebellabs/java-build-tools-how-dependency-management-works-with-mave ...

  7. 项目管理及自动构建工具Maven

    项目管理及自动构建工具Maven 一.Maven安装.目录结构.cmd命令1.下载安装apache-maven-3.2.3-bin.zip下载:http://maven.apache.org/down ...

  8. 构建工具maven

     构建工具maven  =UTF-8''Gradle Effective Implementation Guide.pdf: http://www.t00y.com/file/76854506 b ...

  9. Java 中三大构建工具:Ant、Maven和Gradle

    Java世界中主要有三大构建工具:Ant.Maven和Gradle 目前:Ant已经销声匿迹.Maven也没落了,而Gradle的发展则如日中天. Maven的主要功能主要分为5点,分别是依赖管理系统 ...

随机推荐

  1. Zookeeper:Windows下Zookeeper启动zkServer.cmd闪退问题

    Zookeeper在Windows下启动只需要运行zkServer.cmd双击即可(需保证运行环境中正确安装了Java运行环境) 但是在有的时候会出现双击闪退的情况.针对闪退,可按照如下方法进行解决: ...

  2. springboot项目启动,停止,重启

    参考博客 https://www.cnblogs.com/c-h-y/p/10460061.html 打包插件,可以指定启动类 <build> <plugins> <pl ...

  3. 《基于JQuery和CSS的特效整理》系列分享专栏

    <基于JQuery和CSS的特效整理>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/201724.html 文章 一款基于jQue ...

  4. bugku Crypto 下半部分wp

    1. 百度托马斯这个人居然还发明了一种轮转的加密法,发现原理是,他将很多行乱序的26个字母,插到一根柱子上,参考糖葫芦的样子,可以旋转每一行,设置自己要发送的明文后,向对方发送乱码的一列,对方只要将这 ...

  5. IDEA+Hadoop2.10.1+Zookeeper3.4.10+Hbase 2.3.5 操作JavaAPI

    在此之前要配置好三节点的hadoop集群,zookeeper集群,并启动它们,然后再配置好HBase环境 本文只是HBase2.3.5API操作作相应说明,如果前面环境还没有配置好,可以翻看我之前的博 ...

  6. ADC电阻分压采集相关知识

    1.电池串联可以增加电压,电池并联可以增加电流,都是为了增加电功率.但是电池不宜并联,即使是相同规格的电池,如果消耗不同,电势就会不同,会造成电池之间的放电现象. 2.电阻的作用: 限流:为使通过用电 ...

  7. C语言代码段

    /* 功 能:将str字符串中的oldstr字符串替换为newstr字符串 * 参 数:str:操作目标 oldstr:被替换者 newstr:替换者 * 返回值:返回替换之后的字符串 */ char ...

  8. 「BZOJ2839」集合计数

    「BZOJ2839」集合计数 题目大意: 一个包含 \(n\) 个数的集合有 \(2^n\) 个子集,从这些子集中取出若干个集合(至少一个),使他们的交集的元素个数恰好为 \(k\),求方案数,答案对 ...

  9. [刘阳Java]_第一个Java程序_第7讲

    1. 其实第一个Java程序是很简单,但是当自己编写第一个Java程序时候需要注意如下几个内容: 理解Java程序的运行环境 校验你的Java环境变量是否能够运行你所写的第一个Java程序 理解Jav ...

  10. 【剑指offer】27. 二叉树的镜像

    剑指 Offer 27. 二叉树的镜像 知识点:二叉树:递归:栈 题目描述 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 示例 输入:root = [4,2,7,1,3,6,9] 输出:[4, ...