JAVA WEB DAY 18_ Maven

本文详细介绍了Maven的基础知识,包括Maven的作用、仓库类型、坐标概念、安装配置、IDEA的绑定、项目创建方法。重点讲解了Maven的生命周期、常用命令及其在实际开发中的应用,如自定义jar包的创建与使用,以及Tomcat7插件的配置和依赖管理。通过本文,读者将能掌握Maven的核心功能和操作技巧。

Maven 基础

01_Maven概述-[★]

  • maven的作用:
  1. 依赖管理
  2. 构建项目:管理项目的生命周期
  3. 分模块开发

02_Maven的仓库-[★★]

  1. 仓库的作用:用于存储jar包

  2. 仓库的类型:
     本地仓库
     远程仓库
      中央仓库
      第三方仓库:阿里云仓库
      私服

03_Maven的坐标-[★★]

maven坐标的作用:jar包在仓库的唯一标识.

  • 坐标的组成元素

坐标 = groupId + artifactId + version

元素名称说明
groupld团体,公司,项目的名字,通常它以创建这个项目的组织名称的逆向域名开头。
artifactld模块名,在groupld下的表示一个单独模块项目的唯一标识符
version一个项目的特定版本。正在开发中的项目可以用“SNAPSHOT”加上一个特殊的标记。
  • 引入坐标示例

例如:要引入 junit 的 jar 包,只需要在 pom,xml 配置文件中引入 junit 坐标即可

04_Maven的安装和配置-[★★★★★]

能够安装和配置maven,详情参考预习资料文档

05_IDEA绑定本地Maven服务器-[★★★★★]

在idea中配置maven环境需要设置哪些信息:

  1. 配置maven的主目录:解压的目录
  2. 关联了maven的配置文件:settings.xml
  3. 配置maven的本地仓库
  4. 配置的运行参数:-DarchetypeCatalog=internal

06_使用Maven向导创建JavaWeb工程-[★]

  • 实现步骤
  1. 使用maven向导骨架创建JavaWeb项目
  2. maven对JavaWeb项目目录结构的要求
  3. 手动完善JavaWeb的目录结构
  4. 创建一个Servlet
  5. 部署项目并运行
  • 小结
  • 使用maven向导骨架创建项目存在问题:每次都要联网下载数据,耗时。

  • maven对JavaWeb项目目录结构的要求如下图

在这里插入图片描述

07_使用插件创建JavaWeb工程-[★★★★★]

  • 实现步骤
  1. 安装插件:JBLJavaToWeb,安装流程参考word文档
  2. 创建maven项目,不用向导骨架
  3. 使用插件转换为web项目
  4. 点击项目同步
  5. 配置pom.xml,导入servlet依赖
<?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.pkx</groupId>  
  <artifactId>day36_maven02</artifactId>  
  <version>1.0-SNAPSHOT</version>
  <!--设置当前项目的打包方式:jar或war,默认是jar-->
  <packaging>war</packaging>

  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>
  </dependencies>

</project>
  1. 创建Servlet
@WebServlet(urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         // 设置内容类型和编码
         response.setContentType("text/html;charset=utf-8");
         // 获得字符打印流
         PrintWriter out = response.getWriter();
         out.println("Hello Maven 01");
    }
}
  1. 部署项目运行

使用插件JBLJavaToWeb创建maven项目的好处:不需要手动完善目录结构,不需要联网下载构建信息

08_Maven项目生命周期概述-[★★]

  • 项目生命周期概述
  • 什么是项目的生命周期:从编码到项目交付的整个过程
  • 生命周期的主要阶段
    编码
    测试
    打包
    部署
    交付测试
    维护
  • 生命周期相关命令
命令说明
mvn clean清除原来的编译结果
mvn compile编译,但没有编译测试文件夹
mvn test运行测试代码
mvn package打包项目
mvn install将项目打包并安装到本地仓库
mvn depoly发布到本地仓库或服务器

Maven管理项目生命周期过程都是基于插件完成的,如果在pom.xml中配置了plugin插件,则使用配置的插件版本。如果没有配置,则使用Maven默认的插件版本,默认的插件版本更低一些。

09_Maven项目生命周期常用命令-[★★★★★]

命令使用方式

  • 在IDEA中使用内置maven工具操作

  • 在DOS命令行中使用

常用命令演示

  • clean

清除编译结果:删除target目录

  • complie

编译main目录下的文件:不会编译test目录下的文件

  • complie

编译main目录下的文件:不会编译test目录下的文件

  • test

运行test目录下的测试类中的测试方法

  • package

根据pom.xml配置的打包类型进行打包

  • install

打包项目并将包安装到本地仓库:其他项目就可以通过本地仓库引入包

注意事项
test命令注意事项:测试类名必须以Test开头或Test结尾
install命令注意事项:项目必须有web.xml配置文件,如果没有web.xml文件则需要在pom.xml文件中配置如下信息:

<properties>
 	<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
常用命令说明
mvn clean删除target目录
mvn compile编译main目录下的源文件,test目录下不会编译
mvn test编译test目录源文件并执行测试类的测试方法
测试类名必须以Test开头或Test结尾
mvn package根据pom.xml配置的格式进行项目打包
mvn install打包项目并安装本地仓库

10_Maven自定义jar包演示-[★★★★★]

案例需求

  1. 在Maven项目中创建一个工具类MyUtils,类中包含静态方法sum(int m,int n)实现两个数相加
  2. 将工具类打包成jar,安装到本地仓库中。
  3. 在其他Maven项目使用pom.xml文件引入本地仓库中的jar包
  4. 创建类使用上面的工具类中的方法
  • 实现步骤
  1. 创建Maven项目:在main/java中创建MyUtils类和sum()方法
/**
 *  这是一个很牛逼的数学工具类
 */
public class MyUtils {

    public static int sum(int a,int b){
        return  a + b;
    }
}
  1. 修改pom.xml文件,确认设置了packaging元素为jar,并且修改artifactId和version元素
<?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.pkx</groupId>
    <!--项目名-->
    <artifactId>myutils</artifactId>
    <!--版本-->
    <version>1.0</version>
    <!--打包类型-->
    <packaging>jar</packaging>

    <name>day39_01_Java</name>
    <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>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project> 
  1. 双击install打包并且将jar包发布到本地仓库。在这里插入图片描述
  2. 检查本地仓库有了相应的jar包
  3. 在另一个web项目中引用刚刚创建的jar包,并且点右边的Maven Projects刷新。
<?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.pkx</groupId>  
  <artifactId>day36_maven02</artifactId>  
  <version>1.0-SNAPSHOT</version>
  <!--设置当前项目的打包方式:jar或war,默认是jar-->
  <packaging>jar</packaging>

  <dependencies>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <!--依赖范围-->
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>

    <!--引入自定义jar-->
    <dependency>
      <groupId>com.pkx</groupId>
      <artifactId>myutils</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
  </dependencies>

  <properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
  </properties>

</project>
  1. 在web项目的main/java下创建一个类调用sum方法
public class HelloTest {
    @Test
    public void test01(){
        System.out.println("HelloTest...test01..");
        System.out.println(MyUtils.sum(1, 2));
    }
}

自定义jar包的步骤:

  1. 指定当前项目的坐标,并且指定打包类型:jar
  2. 编写类实现功能,使用install命令安装到本地仓库中
  3. 在另一个项目中,使用坐标导入上面的jar包。
  4. 在项目中使用类和方法

11_依赖管理之Tomcat7插件依赖-[★★★★★]

  • 为什么使用tomcat7插件?
    • 快速运行tomcat
    • 支持热部署:修改webapp目录下的资源之后不用重新部署即可访问最新数据。
  • Maven官方目前只有tomcat7插件,没有提供tomcat8的版本。

配置Tomcat7插件

  1. 将下面代码复制的pom.xml文件中,作为plugins的子元素。端口号和访问地址可以修改
<build>
    <plugins>
      <!--Tomcat7插件-->
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <port>8080</port>
          <path>/</path>
          <!--Tomcat7使用get提交参数有乱码问题,但该插件通过下面配置解决了参数乱码问题-->
          <uriEncoding>UTF-8</uriEncoding>
          <server>tomcat7</server>
        </configuration>
      </plugin>
    </plugins>
</build>

配置使用maven启动tomcat

在这里插入图片描述
在这里插入图片描述

  1. 使用Maven运行Tomcat

在这里插入图片描述

  • 控制台输出信息

在这里插入图片描述

配置Tomcat7插件的步骤:

  1. 复制插件代码到pom.xml文件中
  2. 配置使用maven启动tomcat

12_依赖管理之依赖Jar与依赖范围-[★★]

在maven中只需要导入依赖坐标,无需手动导入jar包就可以引入jar。在pom.xml中使用<dependency>标签引入依赖。

1.1 目标

掌握依赖jar的语法和理解依赖范围

1.2 依赖Jar示例

<dependencies> 
  <!-- junit的依赖包 -->
  <dependency> 
    <groupId>junit</groupId>  
    <artifactId>junit</artifactId>  
    <version>4.12</version>  
    <scope>test</scope> 
  </dependency>

  <!--指定Servlet的依赖包-->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
  </dependency>
</dependencies>  

依赖坐标可以通过http://mvnrepository.com/ 在线搜索写法。

1.3 依赖范围

  • 上面的依赖jar包有个scope是依赖范围:就是这个jar包在什么情况下起作用或使用。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wcqa3OIp-1601638556152)(img/img14.png)]

三种classpath介绍
    编译classpath:在main目录下的java代码编译时可用
    测试classpath:在test目录下的java代码编译时可用
    运行时classpath:在运行的时候可用
  • 四种常见依赖范围
依赖范围说明
compile在任意地方任意时刻都可以使用
provided编译和测试时可以,部署之后不使用
runtime编译时不使用,运行代码需要使用
test测试使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值