首页 > 其他分享 >maven

maven

时间:2024-09-21 19:50:20浏览次数:11  
标签:Maven 项目 仓库 jar maven 使用

09-maven

一 传统项目在使用依赖时的弊端

  1. Maven是什么

Maven是一个项目管理工具

  1. 一键构建 -> 使用一个命令能实现项目的编译,测试,打包,安装和部署
  2. 依赖管理 -> 使用简单的方式管理项目中的jar
  1. 传统项目使用中的弊端
  1. Jar需要手动下载复制进项目
  2. 即使别的项目中出现的jar,也须要再复制一份拷贝到项目中,在磁盘上相同的jar重复 出现很多次

解决办法:

二 maven的依赖管理

注意: 在学习maven之前需要弄清楚一个名称 -> 依赖

举例说明: A类在运行过程中需要调用B类的成员,可以说A依赖于B

  1. 坐标的作用

  1. 仓库的概念
    1. Maven的仓库分为3种
      1. 本地仓库 - 安装在maven服务器所在的主机
      2. 中央仓库 - 官方提供的仓库
      3. 远程仓库 - 安装在局域网中其他主机
    2. 仓库的作用是管理jar
    3. 特殊的仓库 - 私服(中央仓库在国内的镜像仓库,容易访问)

三 maven的下载和安装

  1. 下载
    1. Maven是apache的产品,所以从https://maven.apache.org下载

  1. 安装

因为下载的是zip格式的安装包,所以直接解压在一个没有中文和空格的路径下即可

  1. 测试是否安装成功

只需在cmd中进入安装目录下执行 mvn -v 显示版本号,下图所示就是安装成功

意: 如果运行命令提示不能识别的外部命令,表示没有配置Java_home环境变量,因为maven也是使用Java语言编写的

  1. 配置
    1. 修改本地仓库地址

Maven安装成功后,会自动创建本地仓库文件夹,但是我们一般使用自己的 仓库,所以需要通过配置文件修改

    1. 镜像仓库(私服)的指定

如果引用本地仓库没有的jar,默认会从中央仓库下载,但是中央仓库在国外,网

络条件不好,所以建议国内用户使用镜像仓库替代中央仓库

  1. Maven安装目录的分析

四 一键构建

Maven的一键构建指的是可以使用一个命令实现项目的编译,测试,打包,安装和部署

  1. Clean - 清理命令(清空target目录)

  1. Compile - 编译命令(编译主程序下的Java文件)

  1. Test - 测试命令(编译并运行test下的Java文件)

  1. Package - 打包命令(Java项目 - jar,web项目 - war)

  1. Install - 安装命令(将打包成果物jar/war安装到本地仓库)

  1. 注意
  1. 上面演示的命令是存在执行顺序的,需要按照顺序执行命令

按顺序执行命令是因为后面的命令需要使用前面命令的成果物

  1. 如果没有按照顺序执行,也不会出错,因为maven为了防止出错,会在执行后面命令之 前按照顺序把前面的命令执行一遍.

五 maven的生命周期

Maven项目是存在生命周期的,通过命令来体现生命周期

Maven的生命周期是由3套相互独立的生命周期组成

  1. Clean生命周期    -   clean
  2. Default生命周期  -    compile,test,package,install,deploy
  3. Site生命周期      -   ......

六 maven项目的目录结构

七 使用idea的maven插件创建web项目并部署运行

  1. 工作中使用maven一般需要在idea中配合使用,很少单独使用maven,所以先配置idea 的maven插件

  1. 创建web工程

  1. 准备工作完成后,引入所需jar的坐标

由于引入jar需要使用坐标,如果不知道坐标如何编写,可以从maven的中央仓库进行查找

网址 -->  https://mvnrepository.com/

<?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.bjpowernode</groupId>

  <artifactId>maven_web</artifactId>

  <version>1.0-SNAPSHOT</version>

  <packaging>war</packaging>

  <name>maven_web Maven Webapp</name>



  <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <maven.compiler.source>1.8</maven.compiler.source>

    <maven.compiler.target>1.8</maven.compiler.target>

  </properties>



  <dependencies>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>4.11</version>

      <scope>test</scope>

    </dependency>

    <!--servlet的jar-->

    <dependency>

      <groupId>javax.servlet</groupId>

      <artifactId>javax.servlet-api</artifactId>

      <version>3.1.0</version>

    </dependency>

    <!--jsp的jar-->

    <dependency>

      <groupId>javax.servlet.jsp</groupId>

      <artifactId>javax.servlet.jsp-api</artifactId>

      <version>2.3.1</version>

    </dependency>

    <!--mysql驱动-->

    <dependency>

      <groupId>mysql</groupId>

      <artifactId>mysql-connector-java</artifactId>

      <version>8.0.30</version>

    </dependency>

  </dependencies>



</project>
  1. 代码
@WebServlet(name = "app1",urlPatterns = "/app1")

public class App1Servlet extends HttpServlet {



    @Override

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        System.out.println("app1 servlet doGet......");

        // 转发访问hello.jsp

        req.getRequestDispatcher("/hello.jsp").forward(req,resp);

    }

}

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

    <title>Title</title>

</head>

<body>

  <h2>这是我的第一个maven项目</h2>

</body>

</html>
  1. 效果

八 使用maven的tomcat插件部署启动项目

<!--配置tomcat插件-->

  <build>

    <!--可以配置多个插件-->

    <plugins>

      <!--每个plugin都代表一个插件-->

      <plugin>

        <!--插件无需收动复制jar,只需通过坐标引用即可-->

        <groupId>org.apache.tomcat.maven</groupId>

        <artifactId>tomcat7-maven-plugin</artifactId>

        <version>2.1</version>

        <!--tomcat服务器的配置信息-->

        <configuration>

          <!--启动端口号-->

          <port>8080</port>

          <!--项目的访问路径-->

          <path>/maven_web</path>

          <uriEncoding>UTF-8</uriEncoding>

          <!--使用的web服务器名称-->

          <server>tomcat7</server>

        </configuration>

      </plugin>

    </plugins>

  </build>

 

使用maven开发的时候,可以使用idea的方式启动项目,也可以使用maven的tomcat插件启动项目,在使用方式上有所区别

使用步骤:

  1. 在项目的pom.xml文件中配置tomcat插件
  1. 启动服务器

  1. 启动成功后,访问项目可能出现的问题

九 maven的核心模型

标签:Maven,项目,仓库,jar,maven,使用
From: https://blog.csdn.net/m0_68954884/article/details/142418383

相关文章

  • Maven 使用方法
    MavenMaven是一个项目管理工具,它包含了一个项目对象模型(POM:ProjectObjectModel),其表现于一个XML文件(pom.xml),其中包含了项目的基本学习,依赖关系,插件配置,构建路径等等为什么使用Maven导入第三方jar包更便捷:之前我们在使用第三方框架时我们会把jar包复制粘贴到WE......
  • 一文通Maven :入门配置详解与最佳实践、进阶技巧、项目案例分析、常用依赖
    Maven是我们开发中的基础工具之一,尤为重要。它不仅仅是构建工具,还是项目管理、依赖管理、插件管理的强大平台。本文将通过对Maven配置进行详尽分析,并结合实际项目案例,讨论如何有效配置和优化Maven,提升项目的管理和开发效率。一、Maven基础概念与配置结构Maven的核心......
  • Spring Boot 把 Maven 干掉了,正式拥抱 Gradle!
    没错,SpringBoot做了一个重大调整:在SpringBoot2.3.0.M1中,将首次使用Gradle代替Maven来构建SpringBoot项目。为什么要迁移?SpringBoot团队给出的主要原因是,迁移至Gradle可以减少构建项目所花费的时间。因为使用Maven构建,回归测试时间太长了,等待项目构......
  • maven pom文件中的变量定义
    在Maven中,可以使用变量来简化pom.xml文件的维护和管理。这些变量通常被称为属性(properties),可以用来存储经常使用的值,如版本号、依赖库的版本等。使用属性可以使pom.xml更易于管理和维护,并且可以减少出错的机会。下面是如何在pom.xml文件中定义和使用属性的例子......
  • 9--Maven高级 详解
    目录分模块设计与开发继承与聚合继承与聚合对比私服分模块设计与开发分模块设计就是将项目按照功能/结构拆分成若干个子模块,方便项目的管理维护、拓展,也方便模块键的相互调用、资源共享。实体类只用到了lombok依赖utils使用JWT令牌、阿里云OSS、lombok、WEB开发起步......
  • 如何使用Maven将项目中的依赖打进jar包
    需求有时候写一些库,需要其它三方依赖,但是又不想这个依赖影响到使用方,可以将这些三方依赖打到自己的项目jar包,并且更换包名,避免冲突(更换包名之后,项目中的类引用第三方依赖的类import语句也会跟着变化)。如Mybatis就使用了Ognl库,在打包时把Ognl的所有类都打到了Mybatis自己的jar中......
  • Maven踩坑——父模块生命周期的操作会被子模块继承
    Maven生命周期与阶段总结Maven共有三个主要生命周期,每个生命周期由多个阶段组成。以下是每个生命周期和其阶段的详细描述。生命周期阶段描述默认生命周期validate验证项目是否正确且所有必要信息是否可用。initialize初始化构建状态,设置一些属性。generate-sources生成......
  • Maven笔记(二):进阶使用
    Maven笔记(二)-进阶使用一、Maven分模块开发分模块开发对项目的扩展性强,同时方便其他项目引入相同的功能。将原始模块按照功能拆分成若干个子模块,方便模块间的相互调用,接口共享(类似Jar包一样之间引用、复用)。开发步骤:创建Maven项目书写模块代码分模块开发需要先针对......
  • linux下安装部署Maven
    目录版本对应关系安装maven配置maven验证版本对应关系不同版本下载地址:https://archive.apache.org/dist/maven/Maven与JDK版本的对应关系主要取决于Maven的版本和所需的Java版本。以下是具体的对应关系:Maven2.0.11及以下版本支持JDK1.3和JDK1.4。Maven2.0.11及以上版......
  • maven高级
    Maven高级Web开发讲解完毕之后,我们再来学习Maven高级。其实在前面的课程当中,我们已经学习了Maven。我们讲到Maven是一款构建和管理Java项目的工具。经过前面10多天web开发的学习,相信大家对于Maven这款工具的基本使用应该没什么问题了。我们掌握了Maven工具的......