maven入门教程

maven入门教程

在线预览

问题及引入解决
开发过程中单体结构的项目项目中的资源没有合理的复用引入maven项目资源管理工具
具体细节问题:①大型项目一定会使用框架,那就必然会在web-inf目录下引入大量的jar包,造成jar包和项目耦合度非常的高,后期替换和团队的统一管理就会特别的麻烦将jar包的导入变为通过配置文件来导入,只需要在配置文件中声明jar包的文件名和版本号,如果需要修改删除或者新增时,只需要修改配置文件中jar报的坐标信息即可
具体细节问题:②基于mcv分层思想进行开发,将项目代码全部声明在一起,造成层与层之间的代码在物理视图上的耦合度特别高,一旦其他的web项目要使用开发好的某个业务逻辑,这个操作过程会特别特别繁琐将以前的一个项目拆分为多个项目使用,而每个项目都可以独立进行打包,最终合并为一个整体的项目

什么是maven:maven大体上来说是一个项目管理工具,可以做到代码,依赖以及常用类等各种资源的分享和复用,提高了开发的效率

  1. maven的使用

maven下载:maven下载地址
在这里插入图片描述
在这里插入图片描述
本次演示以3.3.3版本进行演示

1.从官网下载maven插件的压缩包
在这里插入图片描述
2.解压压缩包,并将解压后的内容复制到一个新的文件夹中
在这里插入图片描述
3.配置Maven的本地仓库
本地仓库:本地主机硬盘中存储了各种jar包资源的一个文件夹
maven会根据项目中配置的资源坐标从本地仓库中找到对应的jar包
导入到项目中。
注意:记得在本地主机中将配置的本地仓库的文件夹提前创建好!
在这里插入图片描述
编辑修改
在这里插入图片描述
4.配置maven的中央仓库。
中央仓库:maven下载jar资源的网络仓库,该仓库中存储了N多的jar包资源
只有你想不到的,没有我没有的!当本地仓库没有对应的jar资源时 maven会自动从中央仓库中下载到本地仓库,然后导入项目。
注意:使用maven必须有网。一旦出现jar使用异常,但是经检验项目代码 没有问题,则清空本地仓库,重新从中央仓库中下载。
有兴趣的小伙伴可以自己搭建私服作为maven的中央仓,这样避免了网络的延时,还可以合作伙伴之间进行共享,一般公司中都会采用搭建私服的模式创建中央仓进行资源共享

5.配置maven的jdk版本:因为要使用maven进行打jar,需要指定maven的jdk使用版本。
在这里插入图片描述
2.maven和idea的集成(本文只介绍idea集成maven,eclipse集成maven与之大同小异)

1.点击idea的菜单栏中的file点击setting进入配置页面
在这里插入图片描述
2.在idea的maven的配置页面中配置本地maven的基本信息
在这里插入图片描述在这里插入图片描述
3.在maven的集成页面中配置maven的路径信息以及settings.xml文件的路径和信息,点击完成,即可
在这里插入图片描述
maven配置成功!

3.创建第一个maven项目

maven的jar项目创建:我们在使用了Maven进行项目资源管理后,maven可以帮我们通过 项目资源的配置文件来更新项目的jar包资源,同时也可以将当前项目通过坐标引入到其他项目使用,但是前提必须是项目结构能够被maven能识别,而idea的javaPoject的项目结构maven是不识别的,必须通过maven来创建功能和idea中的javaProject相同的项目,而在maven中我们亲切的称之为jar类型项目。
本质上来说就是用maven创建了一个java项目
流程:
1.在IDea工具中点击file–>new–>moudle–>maven–>点击create from archetype 对勾–> 点击quickstart–>点击next
在这里插入图片描述
2.配置项目的坐标
在这里插入图片描述
3.配置项目本地的存储路径及项目名
在这里插入图片描述
4.jar类型项目的结构
在这里插入图片描述
这时我们需要在main目录下创建resources配置文件包,用来存放配置文件

<?xml version="1.0" encoding="UTF-8"?>

<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>com.practice.consumer</groupId>
  <artifactId>rmi-consumer</artifactId>
  <version>1.0-SNAPSHOT</version>
<!--声明其他资源的坐标,maven会将对应的资源导入到我们的项目中-->
  <name>rmi-consumer</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>
<!--配置项目中的字符编码,jdk编译版本,还可已在properties标签中加入jar包的版本信息 -->
  <properties中的>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>
<!--依赖管理-->
  <dependencies>
    <dependency>
      <groupId>com.practice.provider</groupId>
      <artifactId>rmi-provider</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
<!--插件管理-->
  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

4.创建war项目

在上面我们创建了一个jar项目(其实就是一个普通的java项目),那接下来就创建一个war项目
那什么是war项目呢(maven识别的一个web项目)
1.点击file–>new–>moudle–>maven–>create from archetype–>webaapp–>next
在这里插入图片描述
2.配置war项目的坐标(参考jar项目的步骤2)
3.配置项目名和本地存储路径(参考jar项目步骤3)
4.创建war项目的结构
在这里插入图片描述
配置tomcat插件参考maven集成tomcat

5.maven项目之间的关系

1.依赖关系:如果maven项目A需要使用Maven项目B中的功能,需要将maven 项目B的坐标配置在项目A的pom.xml文件中即可,那么A和B我们称之为依赖关系
注意:maven会自动的根据依赖关系将相关资源导入到项目中,比如A依赖B,但是B依赖C,只在A中配置B的坐标,而 Maven也会根据链式的依赖关系将所有的资源导入到A中
2.继承关系:maven中的子项目自动拥有父项目在pom.xml文件中管理的资源,子项目无需在重新配制
注意: java中的继承,是类于类之间的继承,子类从父类中继承的是功能(属性和方法)
maven中的继承,是项目于项目之间的继承,子项目继承的是父项目的资源
像Java中使用extends关键字来描述类与类之间的关系,maven中也要使用
某种方式来声明项目之间的继承关系
修改某个maven项目的类型为pom类型,该项目就为父项目
注意:pom类型的项目只做资源管理,不做功能开发,说白了就是pom项目中配置了一堆的资源坐标
3.聚合关系:将本来在一个项目中声明的代码,分别拆分为多个项目来开发, 物理视图上是多个项目,逻辑上在开发一个系统,这样的项目关系称为聚合关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值