【JavaLearn】#(29)Maven引入、Maven项目类型、Maven安装与配置、Maven项目的创建和使用、pom配置文件介绍

1. Maven引入

1.1 传统方式中项目jar包资源的问题

  • 项目中的jar包资源(如JDBC驱动包)需要我们自己从网上下载,然后手动导入到项目中使用

    –> 一旦jar包资源过多,容易造成遗漏,且不好管理

  • 如果有两个项目,A和 B,如果 A需要用到 B中的某些资源,需要我们手动将 B中的资源导出为 jar包或者直接复制源码,然后手动导入到 A项目中

问题:都需要开发人员手动处理

解决:Maven项目资源管理工具

  • 管理(查找、下载、引入等)项目中的第三方jar包资源
  • 将自己项目中的某些资源导出为jar包对外提供服务

注意:Maven只能管理通过Maven工具创建的项目(Maven项目)

1.2 基本原理图

【JavaLearn】#(29)Maven引入、Maven项目类型、Maven安装与配置、Maven项目的创建和使用、pom配置文件介绍_第1张图片

1.3 专业术语

  • Maven:项目管理工具
  • Maven插件:给IDE工具集成用的
  • 本地仓库:Maven在本机电脑的硬盘中存储 jar文件的地方
  • 中央仓库:Maven在本地仓库中没有找到对应的资源后会自动的去云仓库中下载,云仓库就是所有的程序员开发好的jar包资源的在线存储仓库(如阿里云)
  • 资源坐标:可以唯一标识一个 jar文件(可以理解为 ID)
    • 资源的路径
    • 资源的版本号
    • 资源的名称

2. Maven的项目类型

  • Java文件:手动创建单个的Java文件,并在该文件中声明对应的功能代码,然后使用 java和 javac命令进行编译和运行
  • Java项目:将处理同一个功能的 Java文件放在一起
  • JavaSE项目:统一Java项目的目录结构体系,让不同的程序员之间沟通方便,由IDE工具帮我们创建(不同 IDE工具创建的项目体系结构不同)
  • JavaEE项目:是一个Web项目,该项目的运行不光需要JDK的支持,还需要服务器容器的支持,由IDE工具帮我们创建(不同 IDE工具创建的项目体系结构不同)

虽然不同的 IDE工具在开发阶段创建的项目体系结构不同,但是在上线阶段,最终运行的代码的项目结构体系是相同的。

  • Maven项目:通过 Maven工具创建的项目
    • POM类型:多模块间互相引用
    • WAR类型:相当于JavaEE项目
    • JAR类型:相当于JavaSE项目

虽然 Maven项目源码的结构体系和JavaSE、JavaEE都不同,但是它们编译后的项目结构体系是一样的,而项目运行的是编译后的内容

3. Maven安装和配置

  • 进入Maven官网

  • 选择对应的版本进行下载,建议选择 apache-maven-***-bin 格式的

    【JavaLearn】#(29)Maven引入、Maven项目类型、Maven安装与配置、Maven项目的创建和使用、pom配置文件介绍_第2张图片

  • 下载后放到合适的位置(虚拟机内的Linux可以通过xftp等工具进行上传)并解压

    Linux解压命令:tar -zxvf apache-maven-3.9.6-bin.tar.gz

  • 进入解压后的文件夹,查看对应的目录结构

    【JavaLearn】#(29)Maven引入、Maven项目类型、Maven安装与配置、Maven项目的创建和使用、pom配置文件介绍_第3张图片

  • 在 conf文件夹下编辑 setting.xml文件(Linux可以使用vim命令),第54行左右,声明本地仓库地址

    【JavaLearn】#(29)Maven引入、Maven项目类型、Maven安装与配置、Maven项目的创建和使用、pom配置文件介绍_第4张图片

  • 然后在第159行左右,配置maven的云仓库地址(此处使用阿里云)

    【JavaLearn】#(29)Maven引入、Maven项目类型、Maven安装与配置、Maven项目的创建和使用、pom配置文件介绍_第5张图片

    <mirror>
        <id>nexus-aliyunid>
        <mirrorOf>centralmirrorOf>
        <name>Nexus aliyunname>
        <url>https://maven.aliyun.com/nexus/content/groups/publicurl>
    mirror>
    
  • 可以在第218行,再配置下maven的 jdk版本(maven会自动从网上下载对应的jdk)

    【JavaLearn】#(29)Maven引入、Maven项目类型、Maven安装与配置、Maven项目的创建和使用、pom配置文件介绍_第6张图片

    <profile>
        <id>jdk-1.8id>
        <activation>
            <activeByDefault>trueactiveByDefault>
            <jdk>1.8jdk>
        activation>
        <properties>
            <maven.compiler.source>1.8maven.compiler.source>
            <maven.compiler.target>1.8maven.compiler.target>
            <maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion>
        properties>
    profile>
    
  • 最后根据个人需要,看是否进行环境变量的配置

    • Windows:在环境变量中,增加 MAVEN_HOME(maven安装目录),然后在PATH下增加:%MAVEN_HOME%/bin

    • Linux:在 /etc/profile 文件中增加:

      export MAVEN_HOME=maven安装目录
      export PATH= P A T H : PATH: PATH:MAVEN_HOME/bin

      然后重新加载配置文件:source /etc/profile

在 IDEA中集成 Maven

4. Maven Project的创建和使用

4.1 Maven的jar类型项目

  • 使用 IDEA(2023.1版本为例),选择New Project,创建一个Maven项目

    【JavaLearn】#(29)Maven引入、Maven项目类型、Maven安装与配置、Maven项目的创建和使用、pom配置文件介绍_第7张图片

  • 点击 Create之后,IDEA会帮我们自动下载并导入依赖,如果没有自动导入,右下角可能有提示,选择“Auto-import”字样的即可

jar 类型项目的结构和特点

【JavaLearn】#(29)Maven引入、Maven项目类型、Maven安装与配置、Maven项目的创建和使用、pom配置文件介绍_第8张图片

  • 相当于之前的JavaSE项目(因此jar项目编译后的项目结构体系,和原有JavaSE项目编译后的结构体系相同)
  • 默认在 test目录下的测试代码不会编译到项目中

4.2 Maven的war类型项目

  • 使用 IDEA创建项目时,在 maven原型处,可以选择 webapp字样的选项

    【JavaLearn】#(29)Maven引入、Maven项目类型、Maven安装与配置、Maven项目的创建和使用、pom配置文件介绍_第9张图片

  • 点击 Create之后,IDEA会帮我们自动下载并导入依赖,如果没有自动导入,右下角可能有提示,选择“Auto-import”字样的即可

war 类型项目的结构和特点

【JavaLearn】#(29)Maven引入、Maven项目类型、Maven安装与配置、Maven项目的创建和使用、pom配置文件介绍_第10张图片

  • 相当于之前的JavaEE项目,完成web项目的开发
  • 项目编译后的结构体系和原有JavaEE项目编译后的结构体系相同(也就是maven的war项目编译后,可以直接在tomcat中使用)

5. Maven项目中 pom配置文件的使用

5.1 pom文件的作用

每个 maven项目默认有一个 pom文件。

pom 文件用来告诉 maven,当前项目中需要使用哪些资源。

我们只需在pom配置文件中,声明需要使用的资源的坐标即可,文件会被 maven自动加载识别。

每次修改 pom后,maven都会根据修改的内容,自动重新加载最新的资源

5.2 pom文件的配置内容

war类型项目的配置文件,jar类型项目的配置文件与之基本相同


<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">

  
  <modelVersion>4.0.0modelVersion>

  
  <groupId>com.lwclickgroupId>
  <artifactId>warDemoartifactId>
  <version>1.0-SNAPSHOTversion>

  
  <packaging>warpackaging>

  
  <properties>
    
    <junit.version>3.8.1junit.version>
  properties>

  
  
  
  <dependencies>

    
    <dependency>
      <groupId>junitgroupId>
      <artifactId>junitartifactId>
      
      <version>${junit.version}version>

      
      <scope>testscope>
    dependency>
  dependencies>

  <build>
    
    <finalName>warDemofinalName>

    
    <plugins>
      
      <plugin>
        <groupId>org.apache.tomcat.mavengroupId>
        <artifactId>tomcat7-maven-pluginartifactId>
        <version>2.2version>
        <configuration>
          
          <port>8080port>
          
          <path>/warDemopath>
        configuration>
      plugin>
    plugins>
  build>
project>

【JavaLearn】#(29)Maven引入、Maven项目类型、Maven安装与配置、Maven项目的创建和使用、pom配置文件介绍_第11张图片

【JavaLearn】#(29)Maven引入、Maven项目类型、Maven安装与配置、Maven项目的创建和使用、pom配置文件介绍_第12张图片

注意

  • 在以前的 JavaEE项目中,IDE会自动的的将 JDK及 tomcat的资源依赖到项目中

  • 而 maven中的 war类型项目,默认是没有引入任何第三方资源的

    因此,想完成最基本的 web开发,需要在 pom中配置最基础的资源坐标:servlet(scope为provided)、jsp(scope为provided)、jstl

你可能感兴趣的:(JavaLearn,maven,java)