美文网首页
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