news 2026/6/23 22:58:46

【Maven】概念、项目的创建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Maven】概念、项目的创建

Maven的概念

Maven 是 Apache 基金会推出的跨平台的项目管理工具,主要服务于基于Java平台的项目构建、依赖管理和项目信息管理,目前是 Java 生态中最主流的构建工具之一。
Maven简化了 Java 应用程序的打包、测试和部署。借助 Maven,开发人员可以使用预定义的生命周期和项目结构更轻松地管理复杂的项目。
maven官方文档: https://maven.apache.org/

依赖管理

什么是依赖管理:
依赖管理是对第三方依赖包的管理,可以连接互联网下载项目所需第三方jar包,避免手动导入 JAR 包的繁琐和版本冲突。对自己开发的模块的管理,可以像引用第三方依赖包一样引用自己项目的依赖包。

项目构建

什么是项目构建:项目构建是一个从编写源代码到编译、测试、运行、打包、部署的过程。
理想的项目构建具有如下特点:高度自动化,跨平台,可重用的组件,标准化的流程
传统项目和maven项目构建的两种方式:
传统项目打开Idea编写源代码和配置文件,对源代码进行编译,可以使用Junit进行单元测试,把项目打成war包,部署到Tomcat服务器中运行。
maven项目是maven将项目构建过程进行标准化,每个阶段都可以使用一个命令来完成。
清理 --> 编译 --> 测试 --> 报告 --> 打包 --> 部署
maven项目构建的好处:
可以通过命令完成项目构建。例如测试使用mvn tomcat:run的命令来发布运行项目。
maven对每个构建阶段进行规范,有利于大型团队协作开发。
Maven的应用场景
开发人员只要按着maven标准的目录结构进行开发即可,然后提交代码,在测试服务器上拉取Java源码,然后可以使用maven的自动化项目构建完成项目的清理、编译、测试、打包和安装部署等。
为什么使用Maven
Ant?没有一个约定的目录结构,必须明确让ant做什么,什么时候做,然后编译,打包,没有生命周期,必须定义目标及其实现的任务序列,没有集成依赖管理;
Maven?拥有约定,知道你的代码在哪里,放到哪里去,拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程,只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情,拥有依赖管理,仓库管理。
Maven概念模型
  • POM 文件:项目对象模型 POM 文件是 XML 文件,其中包含与项目相关的信息和配置信息,执行 Maven 命令时,需要为 Maven 提供一个 POM 文件来执行命令,Maven 读取pom.xml文件以完成其配置和操作。
  • 依赖项和存储库:依赖项是项目所需的外部 Java 库,存储库是打包的 JAR 文件的目录。本地存储库只是机器硬盘驱动器上的一个目录,如果在本地 Maven 存储库中找不到依赖项,Maven 会从中央 Maven 存储库下载它们并将它们放在本地存储库中。
  • 构建生命周期、阶段和目标:Maven 命令通常指构建生命周期、阶段或目标,如果使用 Maven 命令执行生命周期,则该生命周期中的所有构建阶段也会执行,如果执行构建阶段,则还会执行定义序列中的所有先前阶段。
  • 构建配置文件:构建配置文件是一组配置值,允许使用不同的配置构建项目。例如为本地开发、测试或生产构建项目,要启用这些构建,可以在使用其元素中定义不同的构建配置文件。
  • 构建插件:构建插件用于执行特定目标,可以向文件添加插件 ,Maven 提供标准插件,还可以在 Java 中实现自定义插件。

Maven安装

安装准备:安装jdk1.8或以上版本
下载Maven官网: http://maven.apache.org/download.html
下载地址: https://archive.apache.org/dist/maven/maven-3/3.6.0/binaries/
版本是Maven3.6,安装Maven解压到相应目录即可(无中文路径)
Maven安装目录分析
bin:可执行命令存放地,包含 Maven 的启动脚本,是调用 Maven 命令的入口。
boot:含有plexus-classworlds类加载器框架,负责加载 Maven 核心类
conf:全局配置目录,存放 Maven 的全局配置文件,对当前机器上所有使用该 Maven 的项目生效(优先级低于项目本地配置),含有 settings.xml Maven 核心配置文件,可配置本地仓库路径、远程仓、代理、镜像、认证信息等。
lib:Maven 运行依赖库,包含 Maven 自身运行所需的所有 Jar 包(如核心类库、依赖的第三方组件),无需手动修改或添加。
LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三方软件等简要介绍
Maven的环境变量
配置Maven的环境变量的意义是为了让Maven下的bin目录下的所有可执行程序在任意位置都可以执行
JAVA_HOME 必须配置,Maven 是基于 Java 开发的工具,必须依赖 JDK 才能运行,JAVA_HOME 用于指定 JDK 的安装路径,需指向 JDK 根目录,编辑器在读取本机Maven的时候,先找JAVA_HOME,若不设置JAVA_HOME直接设置JAVA 的 PATH 变量,在cmd运行时可能会有报错
设置MAVEN_HOME环境变量,把maven的解压后的路径添加为变量值,指向 Maven 的安装根目录,用于统一管理 Maven 路径(后续配置 PATH 时会引用此变量,方便后续升级 Maven 时只需修改此处)
PATH 系统的环境变量,用于指定可执行程序的搜索路径,将 Maven 的 bin 目录添加到 PATH 后,即可在任意目录下直接使用 mvn 命令。
配置值需包含 Maven 的 bin 目录路径,通常通过引用 MAVEN_HOME 简化配置
配置用户范围的settings.xml:
默认的配置文件是 ~/.m2/settings.xml 单个用户的,定义当前用户专属的 Maven 规则,仅对当前登录的用户生效,且会覆盖全局配置中相同的项;
%MAVEN_HOME%/conf/settings.xml 全局的,定义当前机器的全局 Maven 规则,所有使用该 Maven 安装包的用户都会遵循此配置。
想让所有用户共用配置如公司 / 团队统一规则,那么修改 %MAVEN_HOME%/conf/settings.xml,
想做个人专属配置如个人镜像、账号,那么在 ~/.m2 下创建并修改 settings.xml
验证配置是否完成

Maven项目的创建

Maven的第一个项目

按照约定创建Maven项目目录
src/main/java —— 存放项目的.java文件
src/main/resources —— 存放项目资源文件,如spring, mybatis配置文件
src/test/java —— 存放所有测试.java文件,如JUnit测试类
src/test/resources —— 测试资源文件
target —— 项目输出位置
pom.xml —— 项目配置文件
在项目Hello根目录建立pom.xml
在src/main/java/cn/tx/maven目录下新建文件Hello.java
public class Hello { public String sayHello(String name){ return "Hello "+name+"!"; } }
在/src/test/java/cn/tx/maven目录下新建测试文件HelloTest.java
public class HelloTest { @Test public void testHello(){ Hello hello = new Hello(); String results = hello.sayHello("maven"); assertEquals("Hello maven!",results); } }
进行maven的项目操作
  1. 打开cmd命令行,进入Hello项目根目录执行 mvn compile命令,执行默认生命周期的 compile 阶段,编译项目的主源码 src/main/java 目录,编译后的 class 文件会输出到 target/classes 目录;
  2. cmd 中继续录入mvn clean命令,执行清洁生命周期的 clean 阶段,删除项目的 target 目录(该目录存放编译、打包等操作的输出文件),用于清理之前的构建产物;
  3. cmd 中录入 mvn clean compile命令,先执行 clean 清理旧产物,再执行 compile 重新编译源码,相当于 “先清理后编译”,确保基于最新代码构建;
  4. cmd 中录入 mvn clean test命令,先清理,再执行默认生命周期的 test 阶段(会自动执行 compile 编译主源码,再编译测试源码 src/test/java,最后运行测试用例),测试结果会输出到 target/surefire-reports 目录;
  5. cmd 中录入 mvn clean package命令,先清理,再执行 package 阶段(会依次执行 compile、test 等前置阶段),将项目打包为指定格式,打包产物存放在 target 目录下;
  6. cmd 中录入 mvn clean install 查看仓库会把项目安装到仓库里,先清理,再执行 install 阶段(包含 package 及之前的所有阶段),除了打包外,还会将打包产物安装到本地 Maven 仓库,供本地其他项目通过依赖引用该项目。

Maven的第二个项目

按照约定创建Maven项目目录
在项目HelloFriend根目录建立pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.tx.maven</groupId> <artifactId>HelloFriend</artifactId> <version>0.0.1-SNAPSHOT</version> <name>HelloFriend</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency> <dependency> <groupId>cn.tx.maven</groupId> <artifactId>Hello</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> <optional>true</optional> </dependency> </dependencies> </project>
在src/main/java/cn/tx/maven目录下新建文件HelloFriend.java
public class HelloFriend { public String sayHelloToFriend(String name){ Hello hello = new Hello(); String str = hello.sayHello(name)+" I am "+this.getMyName(); System.out.println(str); return str; } public String getMyName(){ return "John"; } }
在/src/test/java/cn/tx/maven目录下新建测试文件HelloFriendTest.java
public class HelloFriendTest { @Test public void tesHelloFriend(){ HelloFriend helloFriend = new HelloFriend(); String results = helloFriend.sayHelloToFriend("zhangsan"); assertEquals("Hello zhangsan! I am John",results); } }
在HelloFriend目录下执行命令mvn package
若把仓库里第一个项目Hello的 jar 包删除的话,再在HelloFriend目录下执行命令mvn package,系统会又报错提示:Could not find artifact cn.tx.maven:Hello:jar:0.0.1-SNAPSHOT,表示无法找到HelloFriend所依赖的Hello 0.0.1-SNAPSHOT.jar,我们需要重新构建第一个项目Hello并安装到数据仓库,在命令行Hello根目录下执行mvn clean install 才可以
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 19:46:58

解决‘此扩展程序不再受支持’问题:FLUX.1-dev开发环境兼容性优化方案

FLUX.1-dev开发环境兼容性优化&#xff1a;从问题到实践的深度解析 在浏览器插件开发的世界里&#xff0c;一个看似无害的提示——“此扩展程序不再受支持”——往往能让整个项目陷入停滞。尤其是当它出现在你基于最新AI模型构建的文生图工具中时&#xff0c;那种挫败感尤为强烈…

作者头像 李华
网站建设 2026/6/23 19:46:19

火山引擎AI大模型生态中FLUX.1-dev的独特定位分析

火山引擎AI大模型生态中FLUX.1-dev的独特定位分析 在AIGC浪潮席卷内容创作领域的今天&#xff0c;一个核心问题始终困扰着从业者&#xff1a;如何让AI真正“听懂”复杂的视觉指令&#xff1f;无论是广告设计师反复修改提示词却得不到理想构图&#xff0c;还是电商平台需要批量生…

作者头像 李华
网站建设 2026/6/22 23:26:36

抖音直播回放永久保存指南:告别内容丢失的烦恼

抖音直播回放永久保存指南&#xff1a;告别内容丢失的烦恼 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 还在为错过精彩直播而懊恼吗&#xff1f;&#x1f914; 当你看到心仪主播的直播&#xff0c;想要永…

作者头像 李华
网站建设 2026/6/23 19:46:59

Bypass Paywalls Clean完整使用教程:快速解锁全网付费内容

Bypass Paywalls Clean是一款专为Chrome浏览器设计的强大扩展工具&#xff0c;能够智能绕过各类网站的付费墙限制&#xff0c;让您免费访问原本需要付费订阅的优质内容。无论您是新闻阅读者、学术研究者还是商业分析师&#xff0c;这款工具都能为您提供便捷的内容获取体验。 【…

作者头像 李华
网站建设 2026/6/23 5:08:47

国产CAD实现铸造与热处理工艺的标准化控制

铸造、热处理等特种工艺&#xff0c;其质量在很大程度上依赖于对过程参数&#xff08;如温度、时间&#xff09;的精确控制。过去&#xff0c;这些参数多依赖于老师傅的个人经验&#xff0c;存在波动性。为实现质量的稳定与均一&#xff0c;必须将个人经验转化为可重复、可验证…

作者头像 李华
网站建设 2026/6/23 19:18:00

微PE官网同款推荐!HunyuanVideo-Foley模型运行环境快速搭建工具包

微PE官网同款推荐&#xff01;HunyuanVideo-Foley模型运行环境快速搭建工具包 在短视频日活突破十亿、影视工业化加速推进的今天&#xff0c;一个被长期忽视却至关重要的环节正成为内容生产链上的“隐形瓶颈”——音效设计。你有没有遇到过这样的场景&#xff1a;精心剪辑了五分…

作者头像 李华