Maven详细入门配置介绍

    xiaoxiao2025-04-22  25

    Maven详细入门配置介绍

    Maven的介绍

    什么是Maven

    maven翻译为“专家”,“内行”。Maven是Apache下的一个纯java开发的开源项目,它是一个项目管理工具,使用maven对java项目进行构建、依赖管理。当前使用Maven的项目在持续增长。Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。一个jar包,会有两种下载的方式。一种是直接下载压缩包,一种是提供maven下载路径。Maven最方便的就是能帮我们下载jar包。告别传统手动导包的方式。

    传统的项目构建

    项目构建是一个项目从编写源代码到编译、测试、运行、打包、部署、运行的过程

    传统的使用eclipse构建项目的过程如下: 构建过程如下: 1)在eclipse中创建一个java web工程

    2)在工程中编写源代码及配置文件等

    3)对源代码进行编译,java文件编译成class文件

    4)执行Junit单元测试

    5)将工程打成war包部署至tomcat运行

    Maven的项目构建过程

    maven将项目构建的过程进行标准化,每个阶段使用一个命令完成,下图展示了构建过程的一些阶段

    上图中部分阶段对应命令如下:

    清理阶段对应maven的命令是clean,清理输出的class文件

    编译阶段对应maven的命令是compile,将java代码编译成class文件。

    打包阶段对应maven的命令是package,java工程可以打成jar包,web包可以打成war包

    运行一个maven工程(web工程)需要一个命令:tomat:run maven工程构建的优点:

    一个命令完成构建、运行,方便快捷。

    maven对每个构建阶段进行规范,非常有利于大型团队协作开发。

    传统项目的依赖管理

    就是对项目所有依赖的jar包进行规范化管理。一个java项目可能要使用一些第三方的jar包才可以运行,那么我们说这个java项目依赖了这些第三方的jar包。

    举个例子:一个crm系统,它的架构是SSH框架,该crm项目依赖SSH框架,具体它依赖的Hibernate、Spring、Struts2。

    传统的项目工程要管理所依赖的jar包完全靠人工进行,程序员从网上下载jar包添加到项目工程中,如下图:程序员手工将Hibernate、struts2、spring的jar添加到工程中的WEB-INF/lib目录下。

    手工拷贝jar包添加到工程中的问题是:

    1、没有对jar包的版本统一管理,容易导致版本冲突

    2、从网上找jar包非常不方便,有些jar找不到。

    3、jar包添加到工程中导致工程过大。

    Maven项目的依赖管理

    maven项目管理所依赖的jar包不需要手动向工程添加jar包,只需要在pom.xml(maven工程的配置文件)添加jar包的坐标,自动从maven仓库中下载jar包、运行,如下图:

    使用maven依赖管理添加jar的好处:

    1、通过pom.xml文件对jar包的版本进行统一管理,可避免版本冲突。

    2、maven团队维护了一个非常全的maven仓库,里边包括了当前使用的jar包,maven 工程可以自动从maven仓库下载jar包,非常方便。

    使用maven的好处

    通过上边介绍传统项目和maven项目在项目构建及依赖管理方面的区域,maven有如下的好处: 1、一步构建 maven对项目构建的过程进行标准化,通过一个命令即可完成构建过程。 2、依赖管理 maven 工程不用手动导jar包,通过在pom.xml中定义坐标从maven仓库自动下载,方便且不易出错。 3、maven的跨平台,可在window、linux上使用。 4、maven遵循规范开发有利于提高大型团队的开发效率,降低项目的维护成本,大公司都会考虑使用maven来构 建项目。

    Maven的安装

    下载安装

    官网下载地址:https://maven.apache.org/download.cgi 将maven解压到一个不含有中文和空格的目录中。

    环境变量配置

    Maven 3.3+ require JDK 1.7 or above to execute - they still allow you to build against 1.3 and other JDK versions by Using Toolchains电脑上需安装java环境,安装J0K1.7+版本(将JAVA_HOME/bin配置环境变量path)配置MAVEN_HOME 将%MAVEN_HOME%/bin 加入环境变量path 通过mvn-v命令检查maven是否安装成功,看到maven的版本及java版本为自己安装的版本即为安装成功。

    Maven仓库

    仓库的作用

    maven的工作需要从仓库下载一些jar包本地仓库就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。

    本地仓库: 用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找 默认本地仓库位置在S{user.dir]/.m2/repository,S{user.dir}表示windows用户目录。

    远程仓库:

    如果本地需要插件或者jar包,本地仓库没有,默认去远程仓库下载。 远程仓库可以在互联网内也可以在局域网内。

    中央仓库: 在maven软件中内置一个远程仓库地址http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由Maven团队自己维护,里面存储了非常全的jar包,它包含了世界上大部分流行的开源项目构件。

    配置本地仓库

    链接:https://pan.baidu.com/s/1qsfWF52K-_WhxEiPtVwnXQ 密码:tkn1

    在MAVE_HOME/conf/settings.xml文件中配置本地仓库位置:

    Maven入门

    Maven项目工程目录约定

    使用maven创建的工程我们称它为maven工程,maven工程具有一定的目录规范,如下:

    src/main/java——存放项目的.java文件

    src/main/resources—-存放项目资源文件,如spring,hibernate配置文件

    src/test/java——存放所有单元测试,java文件,如JUnit 测试类

    src/test/resources——测试资源文件

    target——项目输出位置,编译后的class文件会输出到此目录

    pom.xml—-maven项目核心配置文件

    项目目录约定

    compile compile是maven工程的编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下。 cmd进入命令状态,执行mvn compile 查看target目录,class文件已生成,编译完成。

    test test是maven工程的测试命令,会执行src/test/java下的单元测试类。 cmd执行mvn test执行src/test/java下单元测试类

    clean 是maven工程的清理命令,执行clean会删除target目录的内容。

    package package是maven工程的打包命令,对于java工程执行package打成jar包,对于web工程打成war包。

    install install是maven工程的安装命令,执行install将maven打成jar包或war包发布到本地仓库。

    声明周期

    maven对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:

    Clean Lifecycle在进行真正的构建之前进行一些清理工作。

    Default Lifecycle构建的核心部分,编译,测试,打包,部署等等。

    Site Lifecycle生成项目报告,站点,发布站点。

    概念模型图

    一个项目生命周期(Project Lifecycle) 使用maven完成项目的构建,项目构建包括:清理、编译、测试、部署等过程,maven将这些过程规范为一个生命周期,如下所示是生命周期的各各阶段:

    Eclipse中对Maven进行项目构建

    添加Maven

    为了使得Eclipse中安装的Maven插件(现在下载的Eclipse办版本较高自带的Maven),同windows中安装的那个相同,需要让eclipse中的maven重新定位一下,点击Window->Preference->Maven->Installation->Add进行设置。如图:

    配置Maven本地仓库,首先我们来看一个文件,文件放在maven的安装目录下面的conf子目录下面,大家打开这个文件夹可以看到有个叫settings.xml的文件夹,这个里面包含仓库地址、镜像、插件、代理等配置,也是maven中一个核心配置文件,在后面我们会经常跟她打交道。下面我来看看这个文件以及如何配置本地仓库。

    在eclipse中,点击Window->Preference->Maven->User Settings进行设置。如图:

    创建web项目

    在eclipse中用maven创建项目,右键new>>Maven Project

    输入Maven配置信息

    刚创建完的新Maven项目会报错误(原因是缺少web.xml文件)

    方式一:

    ​ 手动添加WEB-INF文件和web.xml文件

    方式二:(推荐)

    ​ 右击该maven 项目,找到ProjectFacets取消选中Dynamic Web Module选项,点击应用,再选中Dyanmic Web Module,就会出现一个选项卡

    ​ 在Content directory填写src/main/webapp ​ 之后就会在生成两个文件夹

    处理编辑版本,把更改 jre的版本,更改为javaSE-1.8(自己的版本对应)

    方法一:右键项目->build path->configure build path;然后点击Libraries,双击JRE选择javaSE-1.8(根据自己版本选择)

    项目开发时候遇到点击maven update project,项目引入的jdk或者jre会变回1.5版本

    解决办法: 第一步: 在pom.xml里添加下面代码修改成jdk1.8的,这里由于本人用的是jdk1.8的,所以这里填了1.8,如果用jdk1.7的就填1.7,自己对应去填

    <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>

    第二步

    右键点击项目,到properties里设置一下,这里选择1.8跟上面对应的

    添加依赖的jar包和插件

    从网上搜索:百度maven仓库http://mvnrepository.com/tags/maven 这网上收索的要自己加跟元素;依赖jar包需要加<dependencies> 插件需要<build>元素和<plugins>元素

    利用本地仓库,在eclipse建立索引,方便收索jar包 打开Maven视图(window-show View-other)

    在本地仓库重建索引(可以很方便的对pom.xml文件进行配置)

    添加的方法:

    点击pom.xml

    A填写需要的jar包名,C是选择版本,B是作用范围:

    compile 在编译时,测试时,运行时(即打包的时候也要)需要这个jar包【举例:struts2-core】;

    provided 编译时,测试时需要这个 jar包,运行时(打包)不需要【举例:jsp-api.jar;servlet-api.jar】;

    runtime测试时,运行(打包)时需要这个jar包,编译时不需要【举例:数据库驱动包】;

    Test 测试需要这个jar包,编译时,运行时(打包)不需要

    需要手动更新下项目,jar包才对加进去在项目上右键鼠标-》Maven-》update project

    用maven运行项目

    A是用来输入maven命令的,B是以前输入的maven命令 tomcat:run默认是6;tomcat7:run是运行7;这里运行的tomcat都不是自己下载的,都是maven的tomcat插件<build> <plugins> <!-- 配置了很多插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <port>9090</port> <!--项目名称--> <path>/mgr</path> <uriEncoding>UTF-8</uriEncoding> <server>tomcat7</server> </configuration> </plugin> </plugins> </build>

    Maven的debug 点击需要debug需要的项目

    最新回复(0)