zoukankan      html  css  js  c++  java
  • Maven_day01

    Maven_day01

    1. maven介绍

    1.1 什么是maven

    maven译为“专家”,“内行”,是apache下的一个纯java开发的开源项目,是一个项目管理工具,可以对java项目进行构建,依赖管理。

    1.2 传统项目构建

    构建过程:

    创建一个工程,在工程中编写源代码及配置文件,对源代码进行编译,将java文件编译成class文件,执行junit单元测试,最后将工程打包成war包部署到tomcat运行。

    1.3 maven项目构建

    maven将项目的构建过程标准化,每个阶段使用一个命令完成。

    • maven工程构建的优点
      1. 一个命令完成构建,运行,方便快捷
      2. maven对每个构建阶段进行规范,有利于大型团队协作开发

    1.4 传统项目依赖管理

    传统项目工程管理所依赖的jar包完全靠人工进行,手工导入jar包。

    • 缺点

      1. v从网上找jar包不方便,有些jar包找不到

      2. jar包加入到工程中导致工程过大

      3. 没有对jar包版本的统一管理,容易导致版本冲突

    1.5 maven项目依赖管理

    maven项目中所依赖的jar包不需要手工添加,只需要在maven工程的配置文件pom.xml中添加jar包的坐标,就能自动从maven仓库中下载添加所需jar包。

    • 优点
      1. 对jar包版本统一管理,避免版本冲突
      2. maven中的jar包非常全,使用起来很方便

    1.6 使用maven的好处

    2. maven安装及配置

    • 下载

      http://maven.apache.org/download.cgi

    • 解压

      将maven解压到一个不含中文及空格的目录中。

    • maven环境变量配置

      1. 配置jdk,maven3.3.9需要的jdk版本为1.7以上

      2. 配置MAVEN_HOME

      3. 将%MAVEN_HOME%/bin加入到path中

    ​4. 测试maven是否安装成功

    cmd窗口运行mvn -v,看到maven版本为3.3.9及jdk版本为1.7以上,即安装成功:

    3. maven仓库

    3.1 三种仓库

    1. 本地仓库

    用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用的插件或jar包优先从本地仓库查找。默认本地仓库在${user.dir}/.m2/repository,${user.dir}表示windows用户目录,例如:C:UsersWZL1998.m2 epository。

    1. 远程仓库

    远程仓库可以在互联网内,也可以在局域网内。当本地仓库找不到时,就去远程仓库下载。

    1. 中央仓库

    maven团队维护的,存储了非常全的jar包。https://repo1.maven.org/maven2

    3.2 配置本地仓库

    我的本地仓库在D:JavaEE16.Maven epository,在D:JavaEE16.Mavenapache-maven-3.3.9confsettings.xml配置本地仓库位置。

    <localRepository>D:JavaEE16.Maven
    epository</localRepository>
    

    4. maven项目工程目录

    • src/main/java: 存放项目的.java文件
    • src/main/resources: 存放项目资源文件,如spring,mybatis配置文件
    • src/test/java: 存放所有的单元测试.java文件,如junit测试类
    • src/test/resources: 测试资源文件
    • target: 项目输出位置,编译后的class文件会输出到此目录
    • pom.xml: maven项目核心配置文件

    5. 常用maven命令

    在dos窗口中运行时,前面要加上mvn;在eclipse中不需要加

    • compile

      编译命令,将src/main/java下的文件编译为class文件输出到target目录下。这个命令只会对java源程序编译,不会编译测试代码,编译测试类:mvn test-compile。

    • test

      测试命令,会运行src/test/java下的单元测试类。

    • clean

      清理命令,删除target目录的内容。

    • package

      打包命令,将java工程打包成jar包,web工程打包成war包。

    • install

      安装命令,将maven工程打成war包发布到本地仓库。位置:仓库/${groupId}/{artifactId}/version目录。

    6. 生命周期(了解)

    6.1 三套生命周期

    maven对项目构建过程分为三套相互独立的生命周期。

    • clean lifecycle

      在进行真正的构建之前进行一些清理工作。

    • default lifecycle

      构建的核心部分,编译,测试,打包,部署等。

    • site lifecycle

      生成项目报告,站点,发布站点。

    6.2 生命周期的阶段

    每个生命周期有很多阶段,每个阶段对应一个执行命令。

    • clean lifecycle

      pre-clean: 执行一些需要在clean之前完成的工作

      clean: 移除所有上一次构建生成的文件

      post-clean: 执行一些需要在clean之后立刻完成的工作

    • default lifecycle

    • site lifecycle

      pre-site: 执行一些需要在生成站点文档之前完成的工作

      site: 生成项目的站点文档

      post-site: 执行一些需要在生成站点文档之后完成的工作,并为部署做准备

      site-deploy: 将生成的站点文档部署到特定的服务器上

    在maven中,只要在同一个生命周期,执行后面的阶段,前面的阶段也会被执行,而不需要额外去输入前面的阶段。执行某个生命周期的某个阶段不会影响其它的生命周期。

    如果要同时执行多个生命周期的阶段,可在命令行输入多个命令,中间以空格隔开。如:clean package,该命令执行clean生命周期的clean阶段和default生命周期的package阶段。

    7. maven概念模型

    maven包含一个项目对象模型(project object model),一组标准集合,一个项目生命周期(project lifecycle),一个依赖管理系统(dependency management system),和用来运行定义在生命周期阶段中插件(plugin)目标(goal)的逻辑。

    maven概念模型图:

    • 项目对象模型

      一个maven工程都有一个pom.xml文件,在该文件中定义项目的坐标,项目依赖,项目信息,插件目标等。

    • 标准集合

      maven将整个项目管理过程定义一组标准。如:通过maven构建工程由标准的目录结构,有标准的生命周期阶段,依赖管理有标准的坐标定义等。

    • 项目生命周期

    • 依赖管理系统

      对项目所依赖的jar包进行统一管理。

      <!--添加依赖包-->
        <dependencies>
      	<!--此项目用到servlet,所以需要servlet-api-->      
        	<dependency>
              <!--groupId和artifactId统称为坐标,保证项目的唯一性-->
               <!--组织名-->
        		<groupId>javax.servlet</groupId>
               <!--模块名,项目名-->
        		<artifactId>servlet-api</artifactId>
               <!--版本号-->
        		<version>2.5</version>
               <!--依赖的作用范围-->
        		<scope>provided</scope>
        	</dependency>
        </dependencies>
      
    • 插件目标

      maven管理项目生命周期过程都是基于插件完成的。

    8. 入门项目构建

    8.1 eclipse安装m2e插件

    新建项目时如果能找到maven项目即表示maven插件已存在,但项目为了统一maven版本不会使用内置的maven版本,这里使用maven3.3.9。

    指定maven安装目录:

    8.2 User setting配置

    配置使用的maven的settings.xml文件,使用maven安装目录下的settings.xml文件:

    修改了settings.xml文件要点击update settings按钮对本地仓库重建索引,点击reindex。

    8.3 eclipse浏览本地仓库

    测试eclipse是否可以浏览maven的本地仓库,找到local respository本地仓库项,如果无法查看本地仓库,则右键点rebuild index重建索引即可。

    8.4 定义maven坐标

    每个maven工程都要定义本工程的坐标,坐标是maven对jar包的身份定义。如:

    <!--组织名,类似包名-->
    <groupId>com.itheima.maven</groupId>
    <!--模块名,项目名-->
    <artifactId>16.1maven</artifactId>
    <!--版本号;snapshot为快照版本,即非正式版本,release为正式发布版本-->
    <version>0.0.1-SNAPSHOT</version>
    <!--打包类型;jar:打包成jar包;war:打包成war包;pom:用于maven工程的继承,通常父工程设置为pom-->
    <packaging>war</packaging>
    

    8.5 构建web工程

    8.5.1 创建maven工程

    1. 右键new maven project

    2. 勾选create a simple project(skip archetype selection)

      即跳过骨架,如果不跳过,则创建的maven工程目录不完整。

      如果不勾选:

    3. 定义坐标

    工程目录示意:

    这里报错是因为缺少web工程目录,解决方法:右键项目-->javaEE tools-->generate deployment descriptor stub。生成后:

    8.5.2 设置编译jdk版本

    • 方法一:

    在pom.xml中加入:

     <!--修改全局jdk版本后,则此段代码可不加-->
      <build>
      	<plugins>
      		<plugin>
      		<!--添加编译器:右键项目==maven==add plugin==搜索compile-->
      			<groupId>org.apache.maven.plugins</groupId>
      			<artifactId>maven-compiler-plugin</artifactId>
      			<version>3.5.1</version>
      			
      		<!--将默认jdk版本1.5改为1.7-->
      		<configuration>
      			<!--源码版本-->
      			<source>1.7</source>
      			<!--编译目标版本-->
      			<target>1.7</target>
      			<!--指定编码-->
      			<encoding>utf-8</encoding>
      		</configuration>
      		</plugin>
      	</plugins>
    

    修改配置文件后,刷新工程,右键-->maven-->update projects,看到JRE System Library中变为JavaSE-1.7

    • 方法二:

      修改全局jdk版本:

      在D:JavaEE16.Mavenapache-maven-3.3.9confsettings.xml中修改profiles里的jdk版本为1.7,以后的项目则默认使用1.7来编译。

      <profile>
          <id>jdk1.7</id>
          <activation>
              <activeByDefault>true</activeByDefault>
              <jdk>1.7</jdk>
          </activation>
          <properties>
              <maven.compiler.source>1.7</maven.compiler.source>
              <maven.compiler.target>1.7</maven.compiler.target>
              <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
          </properties>
      </profile>
      

    8.6 运行maven工程

    • 方式一:

      添加tomcat插件,使用插件运行,在pom.xml中:

      <!--添加tomcat7插件,以插件方式运行项目-->
        		<plugin>
        			<groupId>org.apache.tomcat.maven</groupId>
        			<artifactId>tomcat7-maven-plugin</artifactId>
        			<version>2.2</version>
        			<configuration>
        				<!--访问端口-->
        				<port>8080</port>
        				<!--项目路径-->
        				<path>/16.1maven</path>
        				<!--设置编码-->
        				<uriEncoding>utf-8</uriEncoding>
        			</configuration>
        		</plugin>
      

      运行步骤:

    • 方式二:

    直接当作普通的web项目运行即可。右键run as-->run on server。

    9. 依赖管理

    9.1 添加依赖

    添加依赖需要指定依赖jar包的坐标,可通过以下方式查询依赖的坐标:

    • 方式一:互联网搜索

      以spring core为例:

      访问https://mvnrepository.com,搜索spring core,选择版本,复制依赖即可。

      或直接百度搜索mvn repository spring

    • 方式二:使用maven插件的索引功能

      此种方式是从本地仓库中查找。

    9.2 依赖作用范围

    <dependency>
      		<groupId>javax.servlet</groupId>
      		<artifactId>jsp-api</artifactId>
      		<version>2.0</version>
        	<!--l依赖作用范围-->
      		<scope>provided</scope>
      	</dependency>
    
    • compile

      编译范围,默认依赖范围,可不写。编译范围的依赖会用在编译,测试,运行,由于运行时需要所以编译范围的依赖会被打包。

    • provided

      编译和测试时需要,运行时不需要,防止jar包冲突。如servlet-api运行时tomcat也会提供。

    • runtime

      运行和测试时需要。

    • test

      测试编译和测试运行时需要。

    • system

      与provided类似,但必须提供一个本地系统磁盘中的jar文件的路径,不推荐使用。

    10. pom.xml基本配置

    pom.xml是maven项目的核心配置文件,位于每个工程的根目录,基本配置如下:

    <!--project:文件根节点-->
    <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:pom.xml使用的对象模型版本-->
      <modelVersion>4.0.0</modelVersion>
      <!--groupId:项目名称,一般写项目的域名-->
      <groupId>com.itheima.maven</groupId>
      <!--artifactId:模块名称,子项目名称-->
      <artifactId>16.1maven</artifactId>
      <!--version:产品版本号-->
      <version>0.0.1-SNAPSHOT</version>
      <!--packaging:打包类型-->
      <packaging>war</packaging>
      <!--name:项目显示名,长用于maven生成的文档-->
      <name>maven入门</name>
      <!--description:项目描述,长用于maven生成的文档-->
      <description>maven入门案例</description>
      <!--dependencies:添加依赖包,配置依赖的坐标-->
      <dependencies>...</dependencies>
      <!--build:项目构建配置,配置编译,运行插件等-->
      <build></build>
    </project>
    
  • 相关阅读:
    Saltstack module apache 详解
    Saltstack module ip 详解
    Saltstack module iosconfig 详解
    Saltstack module introspect 详解
    Saltstack module inspector 详解
    Saltstack module ini 详解
    Saltstack module incron 详解
    Modbus 指令 RS485指令规则
    停车系统对接第三方在线支付平台(二)
    停车系统对接第三方在线支付平台
  • 原文地址:https://www.cnblogs.com/ALiWang/p/12584487.html
Copyright © 2011-2022 走看看