maven

本文介绍了Maven在管理Java项目中的作用,包括依赖管理、构建流程、仓库配置和坐标系统。详细讲解了如何设置编译级别解决JDK版本问题,以及创建Maven工程的步骤,特别是父模块与子模块的依赖管理。此外,还提到了在创建Maven Web项目时需要注意的JDK版本匹配、Servlet和JSP版本选择以及资源配置。最后,讨论了Maven的依赖范围和资源插件的应用。
摘要由CSDN通过智能技术生成

解决maven中静态资源过滤问题
参考笔记
为什么要设置maven的编译级别
解决“不支持JDK版本5问题”
1.初识maven:

  • 作用:管理依赖(jar包与jar包、jar包与项目、项目与项目之间),构建项目:
  • 构建项目:清理、批量编译java代码、批量执行测试代码、报告测试结果、打包项目、将打包过后的项目安装到本地仓库、部署项目(此步骤自己操作更方便)
  • 打包分类:java程序打包成jar包,web程序打包成war包。
  • 核心概念:pom.xml(项目对象模型),约定的目录结构,坐标(gav表示资源),依赖管理,仓库管理(资源存放的位置),生命周期(项目的构建过程),插件和目标,继承,聚合。
  • 操作maven的两种方式:结合命令、工具创建
  • 项目构建工具大趋所向:gradle
  • JDK:java开发工具包
  • SDK:软件开发工具包

2.maven仓库(存放资源)

  • 远程仓库
    中央仓库(可下载相关架包)、私服、中央仓库的镜像(备份)
    中央仓库链接
  • 本地默认仓库(默认位置:C:\Users\DELL.m2\repository)
  • 如何修改本地仓库的位置:修改maven的根\conf下的settings.xml配置文件
    无3.坐标
  1. groupId:当前Maven构件隶属的组织名。groupId一般分为多段,通常情况下,第一段为域,第二段为公司名称。域又分为 org、com、cn 等,其中 org 为非营利组织,com 为商业组织,cn 表示中国。以 apache 开源社区的 tomcat 项目为例,这个项目的 groupId 是 org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,artifactId是tomcat。(必须)

2.artifactId:项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。(必须)

  1. version:当前版本。(必须) packaging:打包方式,比如 jar,war… (必须)
  1. classifier:classifier通常用于区分从同一POM构建的具有不同内容的构件。它是可选的,它可以是任意的字符串,附加在版本号之后。

4.添加参数的作用:加快下载所需版本的速度
在这里插入图片描述
5.创建maven工程的步骤

  • 空项目
  • 父工程:创maven项目------删除src------在pom.xml中添加
    <packaging>pom</packaging>
  • 子项目(父子module常并列)
    若子继承了父无用的依赖,需pom.xml来管理,提高打包上传效率
    ?如何管理依赖
    ?如何管理依赖的版本号

父 pom.xml(maven的全局设置)

<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.zuo</groupId>
  <artifactId>maven-parent</artifactId>
  <version>1.0</version>
  <modules>
    <module>../maven-web-01</module>
  </modules>

  <name>maven-parent</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>
  <!--管理依赖的版本号-->
  <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>
    //自定义标签,通过EL表达式引用,maven的全局设置
    <junit>4.11</junit>
    <mysql-version>8.0.13</mysql-version>
    <jackson>2.13.3</jackson>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson}</version>
      </dependency>
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql-version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <packaging>pom</packaging>
</project>

子 pom.xml

<?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">
    <parent>
        <artifactId>maven-parent</artifactId>
        <groupId>com.zuo</groupId>
        <version>1.0</version>
        <relativePath>../maven-parent/pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>maven-web-01</artifactId>

    <name>maven-web-01</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>
    <modules>
        <module>../maven-javase-01</module>
    </modules>

    <!--设置编译级别-->
    <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>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>
    <packaging>pom</packaging>

</project>

6.创建maven的web项目注意事项

为你自己的JDK版本设置编译级别,设置成全局:

在这里插入图片描述
settings中的设置:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
project Structure中的设置:
在这里插入图片描述
pom文件:

注意tomcat10导入的servlet和jsp的版本问题,jakarta.servlet.jsp而不是javax.servlet.jsp

<?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.zuo</groupId>
    <artifactId>maven-web-02</artifactId>
    <version>1.0</version>
    <packaging>war</packaging>

//JDK的编译级别局部设置
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>


    <dependencies>
        <dependency>
            <groupId>jakarta.servlet.jsp</groupId>
            <artifactId>jakarta.servlet.jsp-api</artifactId>
            <version>3.0.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>5.0.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

打包成果文件,需加入插件

<build>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.2</version>
    </plugin>
</plugins>
</build>

7.maven的依赖范围

//默认compile,说明这个依赖伴随着maven项目的生命周期
<scope>compile</scope>
//test:例如junit,只在测试过程中使用依赖
<scope>test</scope>
//provided:说明这个依赖服务器已经提供,只在主程序和测试程序中用到,不会被编译
<scope>provided</scope>

8.maven资源插件的应用

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值