一、前言

对于开发一个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. Algorithm:MD5算法原理说明

    MD5算法实现: 输入:不定长度信息(要加密的信息) 输出:固定长度128-bits.由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值. 基本方式为:求余.取余.调整长度.与链接 ...

  2. NodeJS 进程是如何退出的

    有几种因素可以导致 NodeJS 进程退出.在这些因素中,有些是可预防的,比如代码抛出了一个异常:有些是不可预防的,比如内存耗尽.process 这个全局变量是一个 Event Emitter 实例, ...

  3. mongodb oplog详解和格式分析

    1. 基本概念 oplog使用固定大小集合记录了数据库中所有修改操作的操作日志(新增.修改和删除,无查询),mongodb收到修改请求后,先在主节点(Primary)执行请求,再把操作日志保存到opl ...

  4. Linux下如何使用Rsync备份服务器重要数据

    Rsync介绍: Rsync英文全称Remote synchronization,从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像,远程备份的功能,这个功能类似 ...

  5. C语言:易错题

    1. int x=y=z=0;//实际只声明了变量x,而变量y,z并没有声明.可以修改为:int x=0,y=0,z=0; 或int x,y,z; x=y=z=0; 2.int z=(x+y)++;/ ...

  6. asp.net 简明代码

    <asp:RadioButton ID="daadaa" runat="server" GroupName="dada" OnChec ...

  7. Kubernetes部署-RKE自动化部署

    一.简介 RKE:Rancher Kubernetes Engine 一个极其简单,闪电般快速的Kubernetes安装程序,可在任何地方使用. 二.准备工作 I.配置系统 系统:CentOS 7 / ...

  8. 【LeetCode】496.下一个更大元素I

    496.下一个更大元素I 知识点:栈:HashMap: 题目描述 给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集. 请你找出 nums1 中每个元 ...

  9. 前端开发入门到进阶第三集【获取cookie然后单点登录后重定向】

    /* var token ;//https://blog.csdn.net/qq_29207823/article/details/81745757 if( $.cookie('BBK_TOKEN') ...

  10. 使用ThinkPHP5.0.12连接Mongo数据库的经验

    本地开发环境xamppv3.2.2,ThinkPHP5.0.12版本. 由于之前开发项目时使用的是TP3.2.3+mongo数据库,也是在本地进行的,所以也进行过mongo数据库驱动的配置.详细方法可 ...