网站首页 > java教程 正文
“这里是云端源想IT,帮你轻松学IT”
嗨~ 今天的你过得还好吗?
人生就像钟摆
晃动在痛苦和无聊之间
其动力便是欲望
- 2023.12.15 -
Maven作为一款强大的项目管理工具,已经成为了Java开发者的必备技能。那么,如何才能更好地利用Maven来管理我们的项目呢?本文将为你介绍Maven的常用命令,让你的项目构建更轻松!
一、maven 的概念模型
Maven 包含了一个项目对象模型 ,一组标准集合,一个项目生命周期,一个依赖管理系统,和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
项目对象模型 (Project Object Model)
一个 maven 工程都有一个 pom.xml 文件,通过 pom.xml 文件定义项目的坐标、项目依赖、项目信息、插件目标等。
依赖管理系统(Dependency Management System)
通过 maven 的依赖管理对项目所依赖的 jar 包进行统一管理。
比如:项目依赖 junit4.9,通过在 pom.xml 中定义 junit4.9 的依赖即使用 junit4.9,如下所示是 junit4.9的依赖定义:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<dependencies>
一个项目生命周期(Project Lifecycle)
使用 maven 完成项目的构建,项目构建包括:清理、编译、测试、部署等过程,maven 将这些过程规范为一个生命周期,如下所示是生命周期的各个阶段:
maven 通过执行一些简单命令即可实现上边生命周期的各个过程,比如执行 mvn compile 执行编译、执行 mvn clean 执行清理。
一组标准集合
maven将整个项目管理过程定义一组标准,比如:通过 maven 构建工程有标准的目录结构,有标准的生命周期阶段、依赖管理有标准的坐标定义等。
插件(plugin)目标(goal)
maven 管理项目生命周期过程都是基于插件完成的。
二、Maven的常用命令
我们可以在cmd 中通过maven命令来对我们的maven工程进行编译、测试、运行、打包、安装、部署。下面将简单介绍一些我们日常开发中经常会用到的一些maven 命令。
1、mvn compile 编译命令
compile 是 maven 工程的编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target目录下。
cmd 进入命令状态,执行mvn compile,如下图提示成功:
查看 target 目录,class 文件已生成,编译完成。
2、mvn test 测试命令
test 是 maven 工程的测试命令 mvn test,会执行src/test/java下的单元测试类。
cmd 执行 mvn test 执行 src/test/java 下单元测试类,下图为测试结果,运行 1 个测试用例,全部成功。
3 、mvn clean 清理命令
clean 是 maven 工程的清理命令,执行 clean 会删除 target 目录及内容。
4、mvn package打包命令
package 是 maven 工程的打包命令,对于 java 工程执行 package 打成 jar 包,对于web 工程打成war包。
只打包不测试(跳过测试):
mvn install -Dmaven.test.skip=true
5、 mvn install安装命令
install 是 maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库。
从运行结果中,可以看出:当后面的命令执行时,前面的操作过程也都会自动执行。
6、 mvn deploy 部署命令
这个命令用于将项目部署到远程仓库,以便其他项目可以引用。在执行这个命令之前,需要先执行mvn install命令。
7、mvn help:system
这个命令用于查看系统中可用的Maven版本。
8、mvn -v
这个命令用于查看当前环境中Maven的版本信息。
9、源码打包
#源码打包
mvn source:jar
或
mvn source:jar-no-fork
10、Maven 指令的生命周期
关于Maven的三套生命周期,前面我们已经详细的讲过了,这里再简单地回顾一下。
maven 对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”。
这三套生命周期分别是:
- Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
- Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
- Site Lifecycle 生成项目报告,站点,发布站点。
你还在苦恼找不到真正免费的编程学习平台吗?可以试试云端源想!课程视频、在线书籍、在线编程、实验场景模拟、一对一咨询……你想要的全部学习资源这里都有,重点是统统免费!云端源想
三、Maven常用技巧
1、使用镜像仓库加速构建
由于Maven默认从中央仓库下载依赖,速度较慢。我们可以配置镜像仓库来加速构建。在settings.xml文件中添加以下内容:
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
2、使用插件自定义构建过程
Maven提供了丰富的插件来帮助我们完成各种任务,如代码检查、静态代码分析、单元测试等。我们可以在pom.xml文件中添加相应的插件来自定义构建过程。例如,添加SonarQube插件进行代码质量检查:
<build>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.9.1.2184</version>
</plugin>
</plugins>
</build>
四、第一个Maven程序
IDEA创建 Maven项目
打开我们的IDEA,选择 Create New Project
然后,选择 Maven 项目
填写项目信息,然后点击next
选择工作空间,然后第一个Maven程序就创建完成了
以上就是IDEA创建创建第一个 Maven项目的步骤啦,都看到这里了,不要偷懒记得打开电脑和我一起试一试哦。
目录结构
Java Web 的 Maven 基本结构如下:
├─src
│ ├─main
│ │ ├─java
│ │ ├─resources
│ │ └─webapp
│ │ └─WEB-INF
│ └─test
│ └─java
结构说明:
- src:源码目录
- src/main/java:Java 源码目录
- src/main/resources:资源文件目录
- src/main/webapp:Web 相关目录
- src/test:单元测试
小结:
通过掌握Maven的常用命令和技巧,我们可以更高效地管理Java项目,提高开发效率。希望这篇文章能帮助大家更好地使用Maven。
我们下期再见!
END
文案编辑|云端学长
文案配图|云端学长
内容由:云端源想分享
- 上一篇: 深入解析java虚拟机:编译概述,即时编译技术
- 下一篇: 五、编写第一个Java程序
猜你喜欢
- 2024-11-17 Maven 干货: 简单两步,Maven Wrapper 接管你的Java项目编译!
- 2024-11-17 Java字节码指令:invokestatic(0xB8)
- 2024-11-17 Java小白入门教程(2)——基本语法&变量
- 2024-11-17 Jvm从编译到执行
- 2024-11-17 这样做优化,实现 0.059s 启动一个SpringBoot项目
- 2024-11-17 Java 8:一文掌握 Lambda 表达式 | CSDN 博文精选
- 2024-11-17 面试官:Java从编译到执行,发生了什么
- 2024-11-17 五、编写第一个Java程序
- 2024-11-17 深入解析java虚拟机:编译概述,即时编译技术
- 2024-11-17 在.Net中使用Java代码?
你 发表评论:
欢迎- 最近发表
-
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 三石说:java基础 类与对象(java第十一章类和对象)
- java对象创建过程和JVM对象内存分配过程(转载)
- 每天一篇Java面试之框架热门面试答案汇总
- 普通java对象的实例化过程(java实例化对象new)
- 详解JVM中的Java对象(jvm的xmn)
- JOL:Java 对象内存布局(java对象内存空间分配安排)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)