最近在学习使用Maven,做个笔记供自己以后查阅,同时分享给大家。
本篇主要内容:
- 什么是Maven及它的功能有哪些
- Maven的下载与配置
- Maven的常用命令介绍
一、什么是Maven及它的功能有哪些
1、Maven的概念
Maven是一个基于Java平台的自动化构建工具。(构建工具发展史:make–>ant–>maven–>gradle)。
自动化构建工具maven:将原材料(Java、js、css、html、图片、视频等)–>产品(可发布项目)。
2、Maven的作用
- 增加第三方jar
- jar之间的依赖关系(自动关联下载所有依赖的jar,且不会发生版本冲突)
- 将项目拆分成若干个模块
3、maven的功能:
- 清理:删除编译的结果,为重新编译做准备。
- 编译:java->class。
- 测试:针对于项目中的关键点进行测试。
- 报告:将测试的结果进行显示。
- 打包:将项目中包含的多个文件压缩成一个文件,用于安装或部署。
- 安装:将打成的包放到本地仓库,供其他项目使用。
- 部署:将打成的包放到服务器上准备运行。
关于部署:
部署的作用:将java、js、jsp等各个文件进行筛选、组装,变成一个可以直接运行的项目。
eclipse中的项目,在部署时会生成一个对应的部署项目(wtpwebapps中)。部署的项目与eclipse新建的项目之间的区别在于:部署项目没有源码文件src(即.java文件),只有编译后的class文件和jsp文件。二者目录结构不一致,因此tomcat中无法直接运行Eclipse中直接复制过来的项目。
下面是原文件与部署文件两者的目录结构图,从图上可以看出两者的区别。

如果要在tomcat中运行一个项目,则该项目必须严格遵循tomcat的目录结构。
如何将Java web项目打包到tomcat服务器上运行:
- a、通过eclipse进行部署:
选中tomcat服务器右击->Add/Remove Deployments…–>选中要部署的项目–>点击Add–>完成。


- b、将项目打包成war文件部署:
选中项目右键–>Export–>WAR file。将其打包成war文件,并存放在tomcat的webapps目录下。

完成后,用压缩软件打开war文件,我们就可以看到war文件的目录结构如下,其符合tomcat所要求的目录结构。

二、Maven的下载与配置
1.下载配置maven
a、配置JAVA_HOME
b、配置MAVEN_HOME(或者配置M2_HOME,两者都可以).
c、配置path:%MAVEN_HOME%\bin。
d、检验是否配置成功:打开命令提示符–>mvn -v。出现以下界面则成功,否则失败。

e、配置本地仓库
默认本地仓库:C:\Users\24633/.m2/repository。(打开Maven的config目录下的settings.xml文件,第52行可以看到默认的本地仓库位置。)
修改本地仓库:将默认本地仓库下面的 localRepository标签复制到下面,并添加自己的本地仓库目录地址。如下图所示·:

2、使用maven
使用原则:约定优于配置。
例如给某个对象a配置路径:
硬编码方式:a.setPath("d:\\abc");
配置方式:写一个xml文件:<path>d:\\abc<path>
约定:使用默认值d:\abc
maven约定的目录结构: (如下图所示)

pom.xml(和src同级):项目对象模型,将一个项目看成一个对象。
下面三者共同作用可以在本地仓库中唯一标识一个模块或项目。
<groupId>域名翻转.大项目名</groupId>
<groupId>org.lanqiao.maven</groupId>
<artifactId>子模块名</artifactId>
<artifactId>HelloWorld</artifactId>
<version>版本号</version>
<version>0.0.1-SNAPSHOT</version>
依赖:<dependencies> </dependencies>
定义:A.jar中的某些类需要使用B.jar中的某些类,则称为A依赖于B。例如:spring-context.jar–>spring-aop.jar。
在maven的项目中,如果要使用一个当时不存在的jar或模块,则可以通过依赖实现(去本地仓库、远程仓库寻找)
依赖配置示例如下:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.0</version>
<scope>test</scope>
</dependency>
</dependencies>
简单说一下仓库:
仓库分为本地仓库和远程仓库,远程仓库又包括私服(nexus),中央仓库镜像,中央仓库。
- 私服(nexus):一个公司或部门使用的仓库。
- 中央仓库镜像:类似于中央仓库的分身,镜像我们应该都很熟悉了。
- 中央仓库:服务于全球的仓库。
当项目需要使用一个当时不存在的jar或模块时,寻找次序为:本地仓库–>私服(nexus)–>中央仓库镜像(中央仓库),在某一级找到即停止。
三、Maven的常用命令
第一次执行命令时需要下载执行该命令的基础环境,会从中央仓库下载该环境到本地仓库。
执行mvn命令,必须在pom.xml文件所在目录下
按照之前说的maven约定的目录结构建一个HelloWorld项目,演示下面的各个命令:
1、编译命令:mvn compile (只编译main目录中的java文件)
初始时本地仓库为空,执行编译命令后。出现如下图所示提示,则表示编译成功。

并且本地仓库的目录变为:

编译时出现的部分错误及解决方法(本人遇到的):
-
错误一,如下所示:

-
错误原因一:一般是第一次加载这个项目时会遇到这个错误,原因是mvn无法自动加载依赖dependency中配置的jar包。
解决方法:删除目录C:\Users\Administrator.m2\repository\org\apache\maven\plugins下的所有文件,然后选中maven项目–>右键–>update。或者删除本地仓库中刚刚下载的文件,重新编译即可。 -
错误原因二:发现是因为联通网络下,无法访问maven.org网站。
解决方法:解决此问题理论上有两个办法,一个是在maven的配置文件中设置代理,另一个是在maven的配置文件中设置联通网络下,能够访问的中央仓库的mirrors。因为也不好找稳定的代理,所以就找了些可以使用的mirrors(具体参见博客:maven仓库中心mirrors配置多个下载中心(执行最快的镜像))。其中配置方式如下:
打开maven配置文件(即maven安装目录下conf目录下的settings.xml文件),搜索mirrors关键字(一般在文件135行),将mirrors节点的内容更新如下,如果没有mirrors节点则新建一个。
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<!--默认的中央仓库-->
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
<!--自定义添加-->
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
<id>ui</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://uk.maven.org/maven2/</url>
</mirror>
<mirror>
<id>ibiblio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<!--访问慢的网址放入到后面-->
<mirror>
<id>CN</id>
<name>OSChina Central</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>net-cn</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://maven.net.cn/content/groups/public/</url>
</mirror>
<mirror>
<id>JBossJBPM</id>
<mirrorOf>central</mirrorOf>
<name>JBossJBPM Repository</name>
<url>https://repository.jboss.org/nexus/content/repositories/releases/</url>
</mirror>
</mirrors>
2、测试命令:mvn test

并出现了一个target目录:

3、打包:mvn package (打包成jar文件)

在上图红框圈出来的目录下可以找到打包好的jar文件:

4、将开发模块放到本地仓库中供其他模块使用:mvn install (放入的位置通过gav决定,gav即pom.xml文件中提到的可以在本地仓库中唯一标识一个项目或模块的标签)。

按照上图红框圈出来的目录可以在本地仓库找到相应的文件:

5、删除target目录(即编译文件目录):mvn clean。

再次打开项目发现没有了target目录:

本次分享到此结束,敬请等待后续分享。
本文是Maven学习笔记的第一部分,介绍了Maven的基本概念、作用和功能,包括自动化构建、依赖管理和项目模块划分。详细讲解了Maven的下载配置过程,如设置JAVA_HOME、MAVEN_HOME、配置本地仓库,并验证配置是否成功。此外,还探讨了Maven的约定优于配置原则,目录结构,以及如何使用Maven进行编译、测试、打包和清理等常见命令。
&spm=1001.2101.3001.5002&articleId=102581658&d=1&t=3&u=6bf635caef3547d9af113def0df138d5)
8951

被折叠的 条评论
为什么被折叠?



