解决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.坐标
- groupId:当前Maven构件隶属的组织名。groupId一般分为多段,通常情况下,第一段为域,第二段为公司名称。域又分为 org、com、cn 等,其中 org 为非营利组织,com 为商业组织,cn 表示中国。以 apache 开源社区的 tomcat 项目为例,这个项目的 groupId 是 org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,artifactId是tomcat。(必须)
2.artifactId:项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。(必须)
- version:当前版本。(必须) packaging:打包方式,比如 jar,war… (必须)
- 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资源插件的应用