Maven初级笔记part1

Maven

Maven简介

  • Maven 是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
  • POM(Project Object Model) :项目对象模型
    在这里插入图片描述

Maven的作用

在这里插入图片描述

Maven基础概念

仓库:

用于存储资源,包含各种jar包

  • 仓库分类:

    • 本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源
    • 远程仓库:非自己电脑上的仓库,为本地仓库提供资源
      • 中央仓库:Maven团队维护,存储所有资源的仓库
      • 私服:部门、公司范围内存储资源的仓库,从中央仓库获取资源
  • 私服的作用:

    • 保存具有版权的资源,包含购买或自主研发的jar。中央仓库中的jar都是开源的,不能存储具有版权的资源

    • 在一定范围内高速共享资源,仅对内部开放,不对外共享

在这里插入图片描述

坐标:

JAVA开发者必须记住的网址:https://mvnrepository.com/

Maven中的坐标用于描述仓库中资源的位置

  • Maven坐标主要组成

    groupId(组织ID):定义当前Maven项目隶属组织名称(通常是域名反写,例如:org.mybatis)

    artifactId(项目ID):定义当前Maven项目名称(通常是模块名称,例如CRM、SMS)

    version(版本号):定义当前项目版本号

    packaging:定义该项目的打包方式

  • Maven坐标的作用

    使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载交由机器完成

这是JUnit的坐标
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

仓库配置

本地仓库配置

设置本地仓库位置

如设置到:D:\Maven\repository

  1. 找到Maven安装目录->conf->打开settings.xml
  2. 找到/path/to/local/repo
  3. 复制到下面的空白处,将中间的/path/to/local/repo改为D:\Maven\repository
  4. 保存退出

在这里插入图片描述

远程仓库配置
  1. 找到Maven安装目录->conf->打开settings.xml
  2. 找到
  3. 默认连接到的是国外的maven中央仓库,但是速度很慢,我们连接到国内的阿里云镜像仓库,将该代码粘贴
<mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>central</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
全局setting与用户setting区别
  • 全局setting定义了当前计算机中Maven 的公共配置
  • 用户setting定义了当前用户的配置(满足用户个性需求)

手动创建Maven项目

Maven项目构建命令

mvn compile	编译maven项目

mvn clean		清理

mvn test			测试

mvn package	打包源程序。做了compile testCompile test等操作

mvn install		安装到本地目录
Maven项目结构

project->src->1.main(主程序)->1.java(源文件)2.resources(配置文件)

​ 2.test(测试程序) ->1.java2.resources

测试程序也有自己的配置文件,测试程序用自己专属的配置文件,这些配置文件不能在主程序中出现,所以会在test中单独创建

image-20221012233124221

问题:如图,在编译Maven项目时,出现报错。

在这里插入图片描述

理论上是由于没有指定JAVA版本导致的。

解决方案

pom.xml文件中增加maven编译的java.version jdk版本设置,以及maven.compiler.source 资源编译jdk版本设置和maven.compiler.target 资源构建jdk版本设置

我的jdk版本为11,在pom.xml中添加以下代码,保存退出

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <java.version>11</java.version>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
</properties>

再次编译,成功的效果图:

在这里插入图片描述

问题:如图,test时,出现报错

原因:代码写错了,主程序Demo类中返回的是"hello"+name(也就是maven)

而测试程序中写代码,Assert预计值为"hello maven",与真实值"hellomaven“不一致

解决:删去预计值中的空格,或者在Demo中返回"hello "+name

插件创建Maven项目

  • 创建工程
mvn	archetype:generate
	-DgroupId={project-packaging} 
	-DartifactId={project-name} 
	-DarchetypeArtifactId=maven-archetype-quickstart
	-DinteractiveMode=false
	
  • 创建java工程
mvn archetype:generate -DgroupId=com.itheima -DartifactId=java-project -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -DinteractiveMode=false
  • 创建web工程
mvn archetype:generate -DgroupId=com.itheima -DartifactId=web-project -DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot -DinteractiveMode=false

image-20221013012007473

IDEA中创建MAVEN

ctrl+alt+shift+s快捷键打开Project Structure

java工程

在这里插入图片描述

web工程

image-20221013093111055

右键src,添加test文件,右键test文件,添加java和resources文件,右键main,添加java文件。

选中main->java,点击Sources,选中test->java,点击Tests

选中main->resources,点击Resources,选中test->resources,点击Test Resources

image-20221013092902907

运行web需要使用插件【tomcat7】

Maven Repository: org.apache.tomcat.maven » tomcat7-maven-plugin » 2.1 (mvnrepository.com)

在网页中复制Maven里的依赖,删去部分

<dependency>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.1</version>
</dependency>

在pom.xml中添加 粘贴上面复制的依赖

<build>
    <!--设置插件-->
    <plugins>
      <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.1</version>
      </plugin>
    </plugins>
    <finalName>web-01</finalName>
  </build>

依赖

什么是依赖?

如果一个 Maven 构建所产生的构件(例如 Jar 文件)被其他项目引用,那么该构件就是其他项目的依赖

获取依赖坐标

绝大部分依赖的 Maven 坐标都能在 https://mvnrepository.com/ 中获取。

依赖声明

Maven 坐标是依赖的前提,所有 Maven 项目必须明确定义自己的坐标,只有这样,它们才可能成为其他项目的依赖。当 Maven 项目需要声明某一个依赖时,通常只需要在其 POM 中配置该依赖的坐标信息,Maven 会根据坐标自动将依赖下载到项目中。

<dependencies>
        <dependency>
            <groupId>org.apache.tomcat.maven</groupId>
    		<artifactId>tomcat7-maven-plugin</artifactId>
    		<version>2.1</version>
        </dependency>
    </dependencies>
依赖传递

在这里插入图片描述

依赖传递冲突问题

在这里插入图片描述

总结:越靠近根,优先级越高。

​ 在同个pom中,后配置的覆盖前配置的

可选依赖(隐藏传递过来的依赖)

对外隐藏当前所依赖的资源,让别人看不到

<optional>true</optional>
排除依赖(不用传递过来的依赖)

排除依赖是主动去断开依赖的资源,就是说我不需要你啦。被排除的资源无需指定版本。

<exclusions>
	<exclusion>
		<groupId>org.hamcrest</groupId>
		<artifactId>hamcrest-core</artifactId>
	</exclusion>
</exclusions>
依赖范围

依赖的jar默认情况可以在任何地方使用,通过scope标签设定其作用范围

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fantasy`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值