【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 基本原理图

运营管理科技创新孵化平台

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 格式的

    image-20240101154928476

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

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

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

    image-20240101161747122

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

    image-20240101162207176

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

    image-20240101162409306

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

    image-20240101162815936

    <profile>
        <id>jdk-1.8</id>
        <activation>
            <activeByDefault>true</activeByDefault>
            <jdk>1.8</jdk>
        </activation>
        <properties>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
            <maven.compiler.compilerVersion>1.8</maven.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项目

    image-20240101224613686

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

jar 类型项目的结构和特点

image-20240121221313657

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

4.2 Maven的war类型项目

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

    image-20240121221946792

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

war 类型项目的结构和特点

image-20240121222959241

  • 相当于之前的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类型项目的配置文件与之基本相同

<!-- xmlns、xsi:  xml的文档约束 -->
<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.0</modelVersion>

  <!-- 当前项目的资源坐标:给maven查看(主要提供给其他的maven项目来使用) -->
  <groupId>com.lwclick</groupId>
  <artifactId>warDemo</artifactId>
  <version>1.0-SNAPSHOT</version>

  <!-- 此标签用来标识当前项目的"项目类型", 默认为jar -->
  <packaging>war</packaging>

  <!-- 声明 properties标签,对资源的版本号进行统一的管理 -->
  <properties>
    <!-- 自定义标签,声明版本号资源(标签名尽量阅读性比较高) -->
    <junit.version>3.8.1</junit.version>
  </properties>

  <!-- 声明要引入的第三方资源坐标 -->
  <!--  maven会根据坐标先在本地仓库中找,如果本地找不到,则自动从云仓中下载 -->
  <!--  可以在 https://mvnrepository.com/网址 搜索需要的资源坐标  -->
  <dependencies>

    <!-- 声明具体的第三方资源坐标;  一个资源配置一个dependency -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <!-- 使用自定义的标签 -->
      <version>${junit.version}</version>

      <!-- scope标签:用来告诉maven引入的第三方资源的 使用说明
             compile:默认值
                表示当前依赖参与项目的编译、测试、运行阶段,属于强依赖
                打包时,也会打到包内

             test:表示该资源专门给当前项目的测试代码使用,不参与打包

             provided:用于开发、测试阶段,但是不参与打包,运行时由运行的环境来提供对应的资源 -->
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <!-- 打包后的 war包名称 -->
    <finalName>warDemo</finalName>

    <!-- 引入第三方的插件资源 -->
    <plugins>
      <!-- 配置Tomcat插件,只为当前项目服务 -->
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <!-- 配置 tomcat启动的端口号 -->
          <port>8080</port>
          <!-- 配置项目的访问名称 -->
          <path>/warDemo</path>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

image-20240128165835285

image-20240128170941375

注意

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

LRcoding

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

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

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

打赏作者

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

抵扣说明:

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

余额充值