Maven学习笔记

本文详细介绍Maven项目管理工具的使用,涵盖安装配置、常见命令、依赖管理、生命周期及pom.xml配置等核心知识。解析如何在Eclipse中安装Maven插件,创建和运行Maven项目,以及处理依赖冲突和聚合继承的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Maven学习

目录

Maven学习

一、下载安装mavn

二、maven的常见命令

2.1基本命令

三、maven中的坐标和仓库

3.1构件

3.2坐标

3.3仓库

3.4镜像仓库

3.5更改仓库的位置

四、在eclipse(myeclipse)中安装maven插件以及创建maven项目

4.1maven插件安装

4.2maven项目的创建

4.3运行maven项目

五、maven的生命周期、pom.xml文件、范围

5.1maven生命周期:

5.2pom.xml文件常用元素介绍

5.3依赖的范围

八、依赖传递

九、maven依赖冲突

十、聚合和继承

10.1聚合

10.2继承

十一、新建一个web项目(未整理)


《项目管理利器maven》

http://www.imooc.com/learn/443

  1. maven快速入门
  2. maven核心知识
  3. Maven创建hello word

 

一、下载安装mavn

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

 

1.下载http://maven.apache.org/download.cgi maven文件、 JDK版本要符合要求

2.windows下载.zip文件

3.配置mvn的环境变量配置方法与jdk配置的环境变量相同

 

4.mvn -v 查看mvn版本

二、maven的常见命令

2.1基本命令

mvn compile  :编译项目通过则

mvn test   :测试,生成target的文件 (classes为编译的.class文件 report 为编译的报告)

mvn package  :打包项目,生成mvn-01的jar

mvn clean:删除target,测试文件

mvn install:安装jar包到本地仓库中

 

2.2命令执行流程:

1.     mvn compile编译项目

2.     如果在项目编译过程中,程序引用了其他本地项目的依赖(则需要将本地项目mvn install编译成jar包到本地库中,去pom.xml文件中去查找引用依赖包的坐标,加入到该项目的pom文件中)

坐标:

<dependency>

      <groupId>com.imooc.maven01</groupId> <!--项目包名-->

      <artifactId>maven01-model</artifactId><!--模块名(使用项目名称)-->

      <version>0.0.1-SNAPSHOT</version>     <!--快照版本-->

</dependency>

 

3.根据pom.xml文件到本地jar包库查找该jar包,如果找到则maven会将该jar包加入到项目的classpath。如果找不到该jar包,则会去网络上的maven中央仓库中查找jar包,下载,并放入本地仓库中供编译加载classpath使用。

 

 

三、maven中的坐标和仓库

3.1构件

概念:maven中的所有依赖、jar包

3.2坐标

概念:构件的唯一标识:

 

由 groupId、artifactId、version组成一个坐标。通常引用java的jar包时,对jar包名要吻合groupId、artifactId

 

<dependency>

<!--项目包名-->

      <groupId>com.imooc(公司网站的仿写).maven01(项目名)</groupId>

<!--模块名(使用项目名称)-->

      <artifactId>maven01(项目名)-model(所在packag包模块)</artifactId>

<!--快照版本-->

      <version>0.0.1-SNAPSHOT(所构建的版本)</version>    

</dependency>

 

3.3仓库

有本地仓库、网络中央仓库

网络的中央仓库maven提供了全球仓库的地址在本地的配置文件中的

查看方式:

maven-model-builder-3.6.1.jar\org\apache\maven\model\pom-4.0.0.xml

<url>https://repo.maven.apache.org/maven2(全球仓库的地址)</url>

3.4镜像仓库

访问国内的镜像仓库,使得不需要翻墙了,设置如下:

1.打开C:\csh_soft_develop\maven\apache-maven-3.6.1\conf\settings.xml配置文件找到(146行)mirrors

添加如下:

<mirror>

      <id>maven.net.cn</id>

      <mirrorOf>central</mirrorOf> 

<!--表示为哪个仓库配置镜像,配置后就无法访问默认的中央仓库了-->

      <name>central mirror in china</name>

      <url>http://maven.net.cn/content/groups/public</url>

 </mirror>

 

3.5更改仓库的位置

maven从远程仓库中下载的构建,默认放置在当前的用户目录中:C:\Users\***\.m2\repository下的。例如上述的 maven install 构建maven01构建的路径也存在该目录下: C:\Users\***\.m2\repository\com\imooc\maven01\maven01-model。

更改如下:

1.打开C:\csh_soft_develop\maven\apache-maven-3.6.1\conf\settings.xml上述的配置文件,(53行)

2.复制settings.xml文件到修改的路径下(以后更新maven版本就不再需要修改settings.xml)

3.查看是否修改正确,通过cmd进入一个项目路径中,输入maven clean compile maven会重新下载第三方依赖包和插件,并且存在你设定的路径下

四、在eclipse(myeclipse)中安装maven插件以及创建maven项目

4.1maven插件安装

eclipse 4.0版本后不需要安装maven插件,4.0版本以下则安装如下:

找到eclipse文件路径下的dropins文件下复制maven插件,重启eclipse即可。

 

4.2maven项目的创建

eclipse软件:new àotheràmaven

点击next,配置坐标

finish即可完成

4.3运行maven项目

右键项目 run asàmaven bulid

Run

如果报错:

No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?处理方法如下

·  eclipse 导航栏中 【Window】-->【Prefrences】-->【Java】-->【Installed JREs】

 

·  上一步出现的框里点击添加--->【Standard VM】---> 选择JDK的安装目录确定。

 

·  添加JDK路径以后必须把JDK把前面的框 勾上,否则还会出现错误。

 

再次执行compile 或者 install 指令,编译成功。

 

 

如果报错:

问题:Description    Resource   Path   Location   Type

Project configuration is not up-to-date with pom.xml. Select: Maven->Update Project... from the project context menu or use Quick Fix.  hi     line 1 Maven Configuration Problem

处理: 右键项目,【Maven】—》【Update Project Configuration…】

五、maven的生命周期、pom.xml文件、范围

5.1maven生命周期:

完整的项目构建过程包括:

清理、编译、测试、打包、集成测试、验证、部署

 

clean,compile、test、package、install

清理、编译、测试、打包、安装

例如package:

package时期(clean package),则会先执行compile和test指令

输入 clean package à最终生成jar文件

Building jar: C:\Users\401\eclipse-workspace\hi\target\hi-0.0.1-SNAPSHOT-sources.jar

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS0.0.1-SNAPSHOT

5.2pom.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/maven-v4_0_0.xsd">

  <!--指定了当前pom的版本-->

  <modelVersion>4.0.0</modelVersion>


<!--maven常用于一个项目的模块化-->
  <groupId>反写的公司网址+项目名</groupId>
  <artifactId>项目名+模块名</artifactId>
<!--第一个0表示大版本号第二个0表示分支版本号第三个1表示小版本号 0.0.1、snapshot快照、alpha内部测试、beta公测、Release稳定、GA正式发布-->
  <version>0.0.1-SNAPSHOT</version>

<!--默认是jar war zip pom-->
  <packaging>war</packaging>

<!--项目名字-->
  <name>yxq Maven Webapp</name>

<!--项目地址-->
  <url>http://maven.apache.org</url>

<!--项目描述-->
  <description></description>

<!--开发人员-->
  <developers></developers>

<!--许可证信息-->
 <licenses></licenses>

<!--组织信息-->
  <organization></organization>

<!--依赖列表-->
<dependencies>
   <!--依赖项-->
    <dependency>
        <groupId>org.apache.maven.plugins</groupId>

         <artifactId>maven-resources-plugin</artifactId>

         <version>2.5</version>

         <type></type>

         <!--依赖范围-->

         <scope></scope>

         <!--设置依赖是否可选,默认false为继承-->

         <optional></optional>

         <!--排除依赖传递列表-->

         <exclusions>

             <!--可排除多个依赖 -->

              <exclusion></exclusion>

         </exclusions>

     </dependency>

  </dependencies>


  <!--依赖的管理,并不会被运行,不会被引用到实际的依赖中,实际用于定义父模块,供子模块继承-->

  <dependencyManagement>

      <dependency></dependency>

      <dependency></dependency>

  </dependencyManagement>


 <build>
  <!--插件列表-->
     <plugins>
         <plugin>
            <!--source插件-->
               <groupId></groupId>
               <artifactId></artifactId>
                <version></version>
          </plugin>

      </plugins>
  </build> 

  <!--子模块对父模块的pom继承-->
  <parent></parent>

  <!--用于聚合多个的module项,可以定义多个模块,一起编译-->
  <modules></modules>

</project>

 

5.3依赖的范围

三种classpath:

1、编译  2、测试  3、运行

<scope></scope>

compile:默认的范围,编译测试运行都有效

provided:在编译和测试时有效

runtime:在测试和运行时有效

test:在测试时有效

system:在编译和测试时有效,与本机系统相关联,可移植性差

import:导入的依赖范围

 

八、依赖传递

1.快速新建三个项目

 

2.依赖关系为:nage依赖bge

       先将bge项目打包成jar包,并存在本地仓库,nage才能通过设置配置文件导入bge,配置nage的pom.xml文件,随后编译nage,具体步骤如下:

  1. 打包bge项目成jar包:对bge项目 run asàmaven buildàclean package
  2. 存在本地仓库: 对bge项目 run asàmaven buildàinstall
  3. 配置nage的pom.xml文件: 配置nage的pom.xml文件:

<!-- nage依赖于bge -->

    <dependency>

           <!-- 输入bge的坐标 -->

        <groupId>com.hongxing</groupId>

            <artifactId>hongxing-bge</artifactId>

            <version>0.0.1-SNAPSHOT</version>

</dependency>

      4.对nage编译run as->maven build->compile

3.依赖关系:shanji依赖nage

根据2步骤,将nage打包存入本地仓库中run asàmaven buildàinstall

查看maven的依赖目录

自动引入bge的依赖包,这就说依赖传递的原因,使得不需要我们自己手动装入bge的依赖包(如果使用排除依赖,使得shanji只依赖于nage,做法如下)

4.排除依赖

保存后 bge的依赖包就会自动被剔除

九、maven依赖冲突

A B 项目依赖于M包不同版本的相同构建,对于C项目依赖于A B项目后,那C依赖的是M项目的哪个版本的构建呢?

原则:

1.短路优先,优先解析路径短的版本

例如

 A->B->C->X(jar)

A->D->X(jar)则会依赖于这个版本

2.路径相同,则哪个项目先申明,则先优先。

路径相同:项目A同时依赖于 Bjar包的 2.4 2.0两个版本,在pom.xml中哪个版本的坐标在上方,哪个就先依赖

 

 

十、聚合和继承

10.1聚合

如果需要依次打包多个项目到本地仓库中,一个个使用install指令进行打包显得十分繁琐,而使用聚合就可以一起运行了

新建一个maven项目:hongxing-aggreation,修改pom.xml文件如下:

run -> maven -> clean install

10.2继承

在依赖关系中,你会发现每个项目中的 junit的依赖包一直存在在各个项目中,这使得依赖变得重复了,这时候需要定义一个父类模板,通过继承来解决

1.新建一个hongxing-parent项目, 将junit的jar包的 dependencies放在dependencyManagement

在dependencyManagement 标签中的依赖是不会被执行的

十一、新建一个web项目(未整理)

没摄入servlet的api的缘故:

新建一个资源文件

新建一个资源文件

 

 

如果是以下情况:

则tongg navigator(window->showview)窗口设置

回到原视图,右键项目->maven->update project

存放资源文件的目录

 

 

检查.class文件的输出路径

 

转化成web项目

右键项目->属性-

 

 

部署时的默认配置:

 

通过插件启动web项目

run as->jetty:run

 

可以指定在某阶段运行该服务,访问网站

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值