美文网首页
Maven基础

Maven基础

作者: 渐进逾 | 来源:发表于2020-03-10 22:29 被阅读0次

    Maven介绍

    可以管理项目jar包的构建,解决jar包之间的冲突;可以对项目进行管理,比如项目打包等,maven使用pom项目对象模型进行构建项目的。

    POM介绍

    POM(Project Object Model 项目对象模型),是一个maven的核心配置文件(xml格式)。用于描述项目如何构建,声明项目依赖,打包运行的方式等等。它是按面向对象的思想来管理项目的(每个jar包都是一个对象,通过给对象配置不同的属性来解决jar包的使用范围、不同版本冲突等),每个maven工程中都有一个pom.xml配置文件。

    Maven作用
    1. 项目jar包的构建
    2. 项目的管理(项目生命周期的管理)
      比如:打包,javase项目打jar,javaweb项目打成war包,还有其他功能
    3. 分模块开发,Maven高级解

    Maven仓库

    仓库类型

    image.png
    官方中央仓库地址:http://repo1.maven.org/maven2/

    第三方阿里云仓库:http://maven.aliyun.com/nexus/content/groups/public/

    Maven

    maven的坐标去仓库里面找到jar包给项目去构建

    坐标的作用

    可以在pom.xml配置坐标信息,坐标信息用于指向仓库里面具体jar包的位置

    坐标具体含义
    image.png

    groupId,对应仓库里面第一层目录

    artifactId,对应仓库里面第二层目录

    version,对应仓库里面第三层目录

    Maven的安装与配置

    实现步骤

    1·下载maven(素材中提供)
    2·解压完成安装
    3·介绍maven服务器的目录结构

    4·配置maven全局配置文件settings.xml
    4.1绑定仓库
    4.2绑定远程仓库,阿里云
    4.3配置全局的jdk编译语言级别版本(如果不配这个,默认编译级别是1.5,太低,idea运行的会有警告)

    5·设置环境变量,到处都可以使用maven的命令
    6·测试是否安装配置成功,如下信息代表配置成功


    image.png

    Maven的生命周期常用命令1—clean与使用命令方式

    生命周期命令介绍
    image.png
    使用命令方式

    方式一:传统方式使用dos命令
    方式二:使用idea开发工具内置集成的maven工具操作(推荐方式)

    Maven的生命周期常用命令2—其他命令

    complie命令:用于对main目录下的java代码编译

    test命令:先编译再运行test目录下的所有java代码,运行test目录下的java有2个要求

    ​ 要求1:测试类类名必须以Test为结尾,否则只会编译不会运行

    ​ 要求2:使用test目录运行测试类输出中文,默认会乱码,不建议使用test命令运行测试类,而是直接在测试类里面点击运行不会乱码。如果要解决这个乱码需要如下设置【了解】

    ​ a.设置当前项目maven码表为utf8

    ​ b.所有生命周期的命令都是使用插件完成的,要求插件必须使用最新版本

    package命令:将当前项目进行打包的

    intall命令:将当前项目安装到本地仓库

    image.png

    依赖管理-依赖插件

    maven的插件介绍

    maven工具自带的插件,每个插件都有特殊的功能,常见知名的插件有2个

    jdk编译语言级别设置插件
    tomcat7插件

    实现步骤
    1. jdk插件用于设置编译级别【了解】

    2. tomcat7插件,非常建议使用这个,因为部署项目速度快
      配置插件代码

    <?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>javaee117</groupId>  
      <artifactId>day35_03_javaweb_selfdefine_plugin</artifactId>  
      <version>1.0-SNAPSHOT</version>
      <packaging>war</packaging>
    
      <!--导入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>
    
      <build>
    
        <plugins>
       <!-- jdk版本编译语言级别插件(了解),因为一般都采用全局settings.xml配置了,如果当前项目不使用全局就可以使用这个插件 -->
          <plugin>
         <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
         <version>3.2</version>
            <configuration>
           <source>1.8</source>
              <target>1.8</target>
           <encoding>UTF-8</encoding>
              <showWarnings>true</showWarnings>
         </configuration>
          </plugin>
    
          <!--tomcat7的插件,官方只提供了tomcat7,没有提供tomcat8
              对比:tomcat7插件与tomcat正式服务器的区别
                    tomcat7插件部署速度快,有如下2个快:
                        A.支持webapp目录下资源修改的热部署,即修改后立即生效,不需要重新部署
                        B.不需要部署,服务器直接运行当前项目模块位置的代码
    
          -->
          <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
              <port>8080</port><!--设置插件使用端口-->
              <path>/</path>   <!--设置项目资源部署目录的名字-->
              <uriEncoding>UTF-8</uriEncoding>  <!--设置get提交中文码表为utf-8,目的解决tomcat7的get方式提交中文乱码-->
              <server>tomcat7</server>   <!--插件服务器的名字-->
            </configuration>
          </plugin>
        </plugins>
    
      </build>
    </project>
    
    
    使用插件运行
    image.png image.png

    对与webapp目录下的资源修改,支持热部署(修改完立刻可以看到效果,不用重新部署)

    对于main目录下java和resources任何的修改,不支持热部署,需要重新部署。

    推荐使用tomcat7,官方没有提供tomcat8,只能用tomcat7插件

    tomcat7,get请求提交中文默认会乱码,但是这个插件解决了

    依赖管理-依赖jar与依赖范围

    依赖jar包
    http://mvnrepository.com/ ,不会写可以在这里参照jar包的坐标依赖写法

    <dependencies> 
      <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>  
    
    依赖范围介绍
    image.png

    编译classpath:在main目录下的java代码编译时可用

    测试classpath:在test目录下的java代码编译时可用

    运行时classpath:在运行的时候可用,才会将jar包部署到服务器上

    编译时和运行时:

    ​ 编译时:指将java代码编译成class文件的时候

    ​ 运行时:在服务器上运行.class文件的时候

    Demo添加联系人信息

    相关文章

      网友评论

          本文标题:Maven基础

          本文链接:https://www.haomeiwen.com/subject/cxwtyctx.html