MAVEN01_概述+核心概念+IDEA中如何使用(创建项目)

①. Maven 简介

①. Maven概述

  • ①. Maven是Apache软件基金会组织维护的一款自动化构建工具。主要有两个作用:
  1. maven工程对jar包的管理过程
  2. 项目的一键构建
  • ②. maven工程对jar包的管理过程
    在这里插入图片描述

  • ③. 项目的一键构建

  1. 先来说说什么是构建?指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理,这个过程称为构建
  2. 一键构建指的是整个构建过程,使用 maven 一个命令可以轻松完成整个工作
    在这里插入图片描述

②. maven的安装

  • ①. 确保安装了java环境:maven本身就是java写的,所以要求必须安装JDK。查看java环境变量:echo %JAVA_HOME%

  • ②. 下载并解压 maven 安装程序

  • ③. 配置 Maven 的环境变量:

	MAVEN_HOME=d:/apache-maven-3.3.9 或者 M2_HOME=d:/apache-maven-3.3.9
	path=%MAVEN_HOME%/bin; 或者%M2_HOME%/bin;
  • ④. 验证是否安装成功 mvn -v
    在这里插入图片描述

③. 原生Maven演示:

  • ①. 如果没有添加上junit测试的依赖,只要类名和方法名,类名和方法名是test开头的,maven约定会去执行,当我们在项目下执行mvn test,会发现如下的"coming…"进行了输出

在这里插入图片描述

  • ②. 如果引入了junit测试,那么①的说明变了,我们会按照junit的测试来

②. Maven的核心概念

①. Maven目录结构

  • ①. maven中约定的目录结构图解:

在这里插入图片描述

  • ②. 各个目录结构详解:

Maven工程的目录结构
(1). src/main/java —— 存放项目的.java 文件
(2). src/main/resources —— 存放项目资源文件,如 spring, hibernate 配置文件
(3). src/test/java —— 存放所有单元测试.java 文件,如 JUnit 测试类
(4). src/test/resources —— 测试资源文件
(5). target —— 项目输出位置,编译后的 class 文件会输出到此目录
(6). pom.xml——maven 项目核心配置文件
注意:如果是普通的 java 项目,那么就没有 webapp 目录
在这里插入图片描述

②. pom.xml

  • ①. modelVersion:Maven模型的版本,对于Maven2和Maven3来说,它只能是4.0.0

  • ②. groupId:组织id,一般是公司域名的倒写,格式可以为

  1. 域名倒写,例如 com.baidu
  2. 域名倒写+项目名,例如com.baidu.appolo
  • ③. artifactId:项目名称,也是模块名称对应groupId中项目中的子项目

  • ④. version:项目的版本号。如果项目还在开发中,是不稳定版本,通常在版本后带 -SNAPSHOT。version使用三位数字标识,例如1.1.0

  • ⑤. name:项目的名称
    在这里插入图片描述

  • ⑥. packaging:项目打包的类型,可以使 jar、war、rar、ear、pom,默认是 jar(一般父工程设置为pom,子工程设置为jar),web项目是war包

  • ⑦. dependencies | dependency:Maven 的一个重要作用就是管理jar包,为了一个项目可以构建或运行,项目中不可避免的,会依赖很多其他的jar包,在Maven中,这些 jar 就被称为依赖,使用标签dependency来配置。而这种依赖的配置正是通过坐标来定位的,由此我们也不难看出,maven 把所有的 jar包也都视为项目存在了

  • ⑧.properties:是用来定义一些配置属性的,例如project.build.sourceEncoding(项目构建源码编码方式),可以设置为UTF-8,防止中文乱码,也可定义相关构建版本号,便于日后统一升级(配置属性)

	<properties>
		<!--源码编译jdk版本-->		
		<maven.compiler.source>1.8</maven.compiler.source>
		<!--运行代码的jdk版本-->
		<maven.compiler.target>1.8</maven.compiler.target>
		<!--项目构建使用的编码,避免中文乱码-->
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<!--生成报告的编码-->
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	</properties>
  • ⑨.build:表示与构建相关的配置,例如设置编译插件的jdk版本(构建)

  • ⑩.parent:在Maven中,如果多个模块都需要声明相同的配置,例如:groupId、version、有相同的依赖、或者相同的组件配置等,也有类似Java的继承机制,用parent声明要继承的父工程的pom配置(继承)

  • ⑩①.modules:在Maven的多模块开发中,为了统一构建整个项目的所有模块,可以提供一个额外的模块,该模块打包方式为pom,并且在其中使用modules聚合的其它模块,这样通过本模块就可以一键自动识别模块间的依赖关系来构建所有模块,叫Maven的聚合

  • ⑩②. description:描述信息

  • ⑩③. relativePath

  1. 父项目的pom.xml文件的相对路径。默认值为…/pom.xml。maven首先从当前构建项目开始查找父项目的pom文件,然后从本地仓库,最有从远程仓库。RelativePath允许你选择一个不同的位置
  2. 如果默认…/pom.xml没找到父元素的pom,不配置relativePath指向父项目的pom则会报错
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!--Maven模型的版本,对于Maven2和Maven3来说,它只能是4.0.0-->
    <modelVersion>4.0.0</modelVersion>
    <!--groupId、artifactId、version三个元素生成了一个Maven项目的基本坐标,
    在众多的maven项目中可以唯一定位到某一个项目。
    坐标也决定着将来项目在仓库中的路径及名称 -->
    <groupId>com.atguigu.gulimall</groupId>
    <artifactId>gulimall</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <!--名称-->
    <name>gulimall</name>
    <!--描述-->
    <description>聚合</description>
    <!--打包-->
    <packaging>pom</packaging>

    <!--模块-->
    <modules>
        <module>gulimall-member</module>
        <module>gulimall-order</module>
        <module>gulimall-coupon</module>
        <module>gulimall-ware</module>
        <module>gulimall-product</module>
        <module>renren-fast</module>
        <module>renren-generator</module>
        <module>gulimall-common</module>
        <module>gulimall-gateway</module>
    </modules>
    <!--插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                    <addResources>true</addResources>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<!--Maven模型的版本,对于Maven2和Maven3来说,它只能是4.0.0-->
	<modelVersion>4.0.0</modelVersion>
	<!--父工程的坐标-->
	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
	<!--公司名或组织名的域名倒序-->
    <groupId>com.atguigu.gulimall</groupId>
	<!--模块名-->
    <artifactId>gulimall-order</artifactId>
	<!--版本号-->
    <version>0.0.1-SNAPSHOT</version>
	<!--名称-->
    <name>gulimall-order</name>
	<!--描述-->
    <description>谷粒商城-订单服务</description>

	<!--配置信息-->
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR3</spring-cloud.version>
    </properties>

	<!--依赖-->
    <dependencies>
        <dependency>
            <groupId>com.atguigu.gulimall</groupId>
            <artifactId>gulimall-common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

③. 仓库repository

  • ①. 本地仓库 :用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,优先从本地仓库查找

说明:
默认本地仓库位置在 u s e r . d i r / . m 2 / r e p o s i t o r y , {user.dir}/.m2/repository, user.dir/.m2/repository{user.dir}表示 windows 用户目录。
在这里插入图片描述在这里插入图片描述

  • ②. 远程仓库
  1. 中央仓库:在maven软件中内置一个远程仓库地址http://repo1.maven.org/maven2,它是中央仓库,服务于整个互联网,它是由Maven团队自己维护,里面存储了非常全的jar包,它包含了世界上大部分流行的开源项目构件
  2. 私服:在局域网环境中部署的服务器,为当前局域网范围内的所有Maven工程服务。公司中常常使
  3. 中央仓库的镜像:架设在不同位置,欧洲,美洲,亚洲等每个洲都有若干的服务器,为中央仓库分担流量。减轻中央仓库的访问,下载的压力。所在洲的用户首先访问的是本洲的镜像服务器

在这里插入图片描述在这里插入图片描述

④. Maven的生命周期

  • ①. maven 对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:
  1. Clean Lifecycle 在进行真正的构建之前进行一些清理工作
  2. Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等
  3. Site Lifecycle 生成项目报告,站点,发布站点

在这里插入图片描述

  • ②.对于我们程序员而言,无论我们要进行哪个阶段的构建,直接执行相应的命令即可,无需担心它前边阶段是否构建,Maven都会自动构建。这也就是Maven这种自动化构建工具给我们带来的好处

⑤. Maven常用命令

  • ①. mvn clean:将target目录删除,但是已经 install 到仓库里的包不会删除

  • ②. mvn compile:编译(执行的是主程序下的代码)

  • ③. mvn test:测试(不仅仅编译了src/main/java下的代码,也编译了java/test/java下的代码)

  • ④. mvn package:打包(执行的时候回打成war包,编译了src/main/java下的代码,也编译了java/test/java下的代码)

  • ⑤. mvn install:安装(执行的时候回打成war包,编译了src/main/java下的代码,也编译了java/test/java下的代码,将这个包安装到了本地仓库中)

  • ⑥. mvn deploy:部署(需要配置才能执行)

注意:
运行Maven命令时一定要进入pom.xml文件所在的目录!

⑥. 插件plugings

什么是插件?
maven提供的功能,用来执行清理、编译、测试、报告、打包的程序

  • ①. clean插件maven-clean-plugin:2.5
    clean阶段是独立的一个阶段,功能就是清除工程目前下的target目录

  • ②. resources插件maven-resources-plugin:2.6
    resource插件的功能就是把项目需要的配置文件拷贝到指定的目当,默认是拷贝src\main\resources目录下的件到classes目录下

  • ③. compile插件maven-compiler-plugin
    compile插件执行时先调用resouces插件,功能就是把src\mainjava源码编译成字节码生成class文件,并把编译好的class文件输出到target\classes目录下

  • ④. test测试插件
    单元测试所用的compile和resources插件和主代码是相同的,但执行的目标不行,目标testCompile和testResources是把src\test\java下的代码编译成字节码输出到target\test-classes,同时把src\test\resources下的配置文件拷贝到target\test-classes

  • ⑤. package打包插件maven-jar-plugin
    这个插件是把class文件、配置文件打成一个jar(war或其它格式)包

  • ⑥. deploy发布插件maven-install-plugin
    发布插件的功能就是把构建好的artifact部署到本地仓库,还有一个deploy插件是将构建好的artifact部署到远程仓库

在这里插入图片描述

⑦. 坐标gav

  • ①.Maven把任何一个插件都作为仓库中的一个项目进行管理,用一组(三个)向量组成的坐标来表示。坐标在仓库中可以唯一定位一个Maven项目

  • ②.groupId:组织名,通常是公司或组织域名倒序+项目名

  • ③.artifactId:模块名,通常是工程名

  • ④.version:版本号
    (需要特别指出的是,项目在仓库中的位置是由坐标来决定的:groupId、artifactId和version决定项目在仓库中
    的路径,artifactId和version决定jar包的名称)

⑧. 依赖dependency

  • ①. 一个Maven项目正常运行需要其它项目的支持,Maven会根据坐标自动到本地仓库中进行查找。对于程序员自己的Maven项目需要进行安装,才能保存到仓库中

  • ②. 不用maven的时候所有的jar都不是你的,需要去各个地方下载拷贝,用了maven所有的jar包都是你的,想要谁,叫谁的名字就行。maven帮你下载

⑨. maven概念模型图

在这里插入图片描述

③. Idea相关配置

①. idea集成maven插件 掌握

  • ①.idea中maven配置(全局setting),找打configure下的settings

在这里插入图片描述

  • ②. 找到Maven将对应的改成本地仓库中的地址

在这里插入图片描述

  • ③. -DarchetypeCatalog=internal
    这个参数的意思是:
    如果我们使用maven为我们提供好的骨架来创建maven工程,一般是要联网的.
    为了在不联网的情况下我们可以正常创建工程,配了这样一个参数,只要我们之前联网下载过之前相关创建工程的插件,它就会从本地仓库找到对应插件,而不会联网下载
    在这里插入图片描述

  • ④. 局部setting

在这里插入图片描述在这里插入图片描述

②. 使用骨架创建maven的java工程

  • ①. 选择创建一个新工程
    在这里插入图片描述
  • ②. 选择骨架构成
    在这里插入图片描述

在这里插入图片描述

③. idea 中创建一个maven的web工程

  • ①. 打开 idea,选择创建一个新工程

在这里插入图片描述

  • ②. 选择 idea 提供好的 maven 的web 工程模板
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • ③.这个窗口基本上不用修改什么,但是这样会比较慢,有时候如果网速不好,就会卡的比较久,这是因为maven这个骨架会从远程仓库加载archetype元数据,但是archetype又比较多,所以比较卡,这时候可以加个属性archetypeCatelog=internal,表示仅使用内部元数据:

在这里插入图片描述

  • ④. 点击 Finish 后开始创建工程,耐心等待,直到出现如下界面。
    在这里插入图片描述
  • ⑤. 手动添加 src/main/java 目录,如下图右键 main 文件夹NewDirectory
    在这里插入图片描述
  • ⑥. 创建一个新的文件夹命名为java
    在这里插入图片描述
  • ⑦. 点击 OK 后,在新的文件夹 java 上右键Make Directory as Sources Root
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

④. 创建一个maven的web工程(不用骨架)

  • ①. 点击new,点击project

在这里插入图片描述

  • ②. 点击maven
    在这里插入图片描述

  • ③. 点击next后,填写对应的信息,一直next
    在这里插入图片描述

  • ④. 创建后页面如下
    在这里插入图片描述

  • ⑤. 添加webapp - -WEB-INF - - web.xml

⑤. Servlet冲突问题

  • ①. 创建一个 Servlet(有jar包冲突问题发生)、直接打开hello_maven工程的pom.xml文件,再添加坐标

在这里插入图片描述
在这里插入图片描述

  • ②. 解决jar包冲突问题
    出现的原因是:pom.xml中导入的jar包和maven自带的tomcat中的jar包发生了冲突
	<!--放置的都是项目所要依赖的jar包-->
	<!--provided的意思是编译时使用它,运行时不使用-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>

在这里插入图片描述

⑥. tomcat插件和jdk插件

  • ①. 点击setting,进行一系列的配置

在这里插入图片描述

  • ②. 只需要打tomcat7和jdk会自动出来提示
  <build>
    <plugins>
      <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
          <configuration>
            <port>8888</port>
          </configuration>
       </plugin>
      <!--jdk插件-->
     <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
         <configuration>
         <target>1.8</target>
           <source>1.8</source>
           <encoding>UTF-8</encoding>
         </configuration>
      </plugin>
    </plugins>
  </build>

在这里插入图片描述

⑦. maven 工程运行调试

  • ①. 端口占用处理
    问题:
    重新执行 tomcat:run 命令重启工程,重启之前需手动停止 tomcat,否则报下边的错误:
    在这里插入图片描述
  • ②. 断点调试:点击如图所示选项

在这里插入图片描述

  • ③. 在弹出窗口中填写如下信息

在这里插入图片描述

  • ④. 如上图红框选中的两个按钮,左侧是正常启动,右侧是 debug 启动

⑧. tomcat配置

  • ①. 点击右上角下拉框,选择Edit Configurations,编辑配置
    在这里插入图片描述

  • ②. 添加tomcat的配置
    在这里插入图片描述

  • ③. 配置tocat服务器,命名,选择tomcat版本,等想配置的信息;最关键的是需要将项目部署出去,可以直接击fix
    在这里插入图片描述

  • ④. 选择war explored,开发阶段我们都选择这个
    在这里插入图片描述

  • ⑤. 当然也可以手动选择要部署出去的项目,特别是有多个项目的情况
    在这里插入图片描述

  • ⑥. 配置项目结构,特别是要注意依赖的包需要部署到WEB-INF的lib目录下
    在这里插入图片描述

  • ⑦. 这步可以点击这里:点击这里以后你运行tomcat后jsp页面修改可以不用重新运行
    在这里插入图片描述

  • ⑧. 配置项目结构,特别是要注意依赖的包需要部署到WEB-INF的lib目录下
    在这里插入图片描述

  • ⑨. 运行后可以得到如下的结果

在这里插入图片描述

  • ⑩. war和war exploded的区别
  1. war模式这种可以称之为是发布模式,看名字也知道,这是先打成war包,再发布

  2. war exploded模式是直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式

  3. 在平时开发的时候,使用热部署的话,应该对Tomcat进行相应的设置,这样的话修改的jsp界面什么的东西才可以及时的显示出来

在这里插入图片描述

⑨. IDEA中导入Maven工程(module)

  • ①. 新建一个空的project作为工作空间

  • ②. 在项目结构中导入或移除 module

在这里插入图片描述

  • ③. 选择要导入的Module:
    在这里插入图片描述

  • ④. 选择导入方式
    在这里插入图片描述

  • ⑤. 选择要导入的项目
    在这里插入图片描述

  • ⑥. 设置导入module所使用的JDK
    在这里插入图片描述

  • ⑦. 导入后项目结构
    在这里插入图片描述

  • ⑧. 导入后视图
    在这里插入图片描述

⑩. 修改目录结构

  • ①. maven有一个很重要的功能是规范项目,标准的项目结构如下所示

在这里插入图片描述

  • ②. 但是你会发现默认创建的项并非是完整的,如写源代码的目录没有,添加方法如下:
    当前项目结构如下:

在这里插入图片描述

  • ③. 添加相应的目录,选择打开项目结构:

在这里插入图片描述

	蓝色:源代码
	绿色:测试
	资源文件(配置信息)
	测试资源文件
	被排除的(打包时被忽视)
  • ④. 目标位置右键添加目录

在这里插入图片描述

  • 21
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
好的,我将分别回答您的问题。 1. Maven仓库执行基本流程 Maven仓库是Maven的一个核心概念,它是用来存储各种构件(如Jar包、War包等)的地方。Maven仓库可以分为本地仓库和远程仓库两种类型。 本地仓库是指存储在本地计算机上的Maven构件库,通常位于用户目录下的.m2文件夹。而远程仓库则是指存储在网络上的Maven构件库,可以是公共的或私有的。 Maven仓库的基本流程如下: 1) Maven在构建项目时会首先检查本地仓库是否存在所需的构件; 2) 如果本地仓库不存在所需的构件,则Maven会到远程仓库下载构件; 3) 下载的构件会被存储到本地仓库,供后续使用。 2. 安装与基本配置 Idea集成maven springBoot的快速入门 要在Idea集成Maven和Spring Boot,您需要按照以下步骤进行操作: 1) 安装Maven:前往Maven官网下载Maven并安装到您的计算机上; 2) 在Idea开启Maven支持:在Idea的Settings找到Maven选项,确保Maven已经被启用; 3) 创建一个新的Spring Boot项目:在Idea选择“Create New Project”然后选择Spring Initializr,填写项目的基本信息并选择所需的依赖项; 4) 修改pom.xml文件:在创建项目后,您需要修改pom.xml文件的依赖项,以确保您的项目能够正常运行; 5) 运行Spring Boot应用程序:在Idea选择“Run”按钮来运行您的应用程序。 3. 修改配置文件,使用注意事项 MyBatisplus的概述,快速入门 MyBatis-Plus是MyBatis的增强工具包,它提供了许多便捷的功能和工具,可以使开发者更加高效地使用MyBatis进行开发。 要使用MyBatis-Plus,您需要按照以下步骤进行操作: 1) 在pom.xml文件添加MyBatis-Plus依赖项; 2) 修改MyBatis配置文件,使其能够使用MyBatis-Plus; 3) 在代码使用MyBatis-Plus提供的API进行数据操作。 使用MyBatis-Plus时需要注意以下事项: 1) MyBatis-Plus只是MyBatis的增强工具包,因此您需要先掌握基本的MyBatis知识; 2) 在使用MyBatis-Plus提供的API时需要注意API名称和参数的正确性; 3) MyBatis-Plus提供了许多便捷的功能和工具,但是不是所有的功能都必须使用,您需要根据具体情况选择使用。 以上就是对于您提出的问题的回答,希望能够帮助到您。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

所得皆惊喜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值