MAVEN1

Maven基础

B站黑马视频

Maven是Apache公司的开源项目,是项目的构建工具,用来依赖管理

maven的好处

  1. 能够有效的减少项目体积,一台电脑上只需要下载一次相同版本的依赖即可。
  2. 在项目需要jar包的时候,去仓库进行引用,所以Maven项目比传统的导入lib再build path所需要的内存小很多。

maven的好处如何实现

  1. 有个jar包仓库(Maven仓库)
  2. 坐标:作为jar包拥有全球唯一的坐标
  3. 举例: struts2-core-2.3.24.jar
  4. Apache(公司名称)+Struts2(项目名)+2.3.24(版本信息)
  5. 当Maven项目中需要一个jar包的时候,只需要在maven项目中配置需要的jar包的坐标信息,maven程序根据jar包坐标的信息去jar包仓库中查找jar包。
  6. maven的两大核心:
  • 依赖管理:对jar包的统一管理。
  • 项目构建:项目在编码完成之后,对项目进行编译、测试、打包、部署等一系列操作都可以命令来实现。

maven安装、配置本地仓库

  1. maven的下载安装
  • 直接上官网下载zip包即可。

  • 解压在没有中文的路径。

  • 目录结构

    1. bin:可执行的脚本命令(mvn)
    2. conf:配置文件(settings.xml)
    3. lib:maven项目运行需要的jar包,因为maven是纯java开发的。
    4. boot:类加载器。
  • 配置环境变量

    1. 配置%MAVEN_HOME%到环境变量中,到bin的上一级。
    2. 配置path环境变量:%MAVEN_HOME%\bin;

    注意:maven需要java环境,JDK环境变量:%JAVA_HOME%

  • 使用mvn -v查看maven版本,以及是否安装成功。

  1. Maven找jar包流程
  • Maven项目会在本地找仓库,如果有则依赖进去,但是随着jar包越来越多,项目越来越大,每个人的电脑里都需要很大的空间来做maven仓库,这时候就可以通过私服来解决,存在于本地的局域网内的一台服务器,存jar包,只需要在这个局域网里就可以依赖到。前提是安装了私服服务器。最后如果再找不到,就到中央仓库,在互联网上,存放了所有开源的jar包,由Maven团队来维护。
  • 步骤:
    1. 本地仓库:本机
    2. 私服:局域网
    3. 中央仓库:互联网
  1. 配置本地仓库
  • 默认在.m2文件夹
  • 自定义
    1. 在maven目录的conf文件夹里有个settings.xml文件,更改里面的localRepository标签,指向自己的仓库位置。

maven项目标准目录结构

  1. src:项目的源码
  • main:主要的
    1. java:代码等。
    2. resources:配置文件等。
    3. webapp:页面的素材等。
  • test:测试的
    1. java:代码等。
    2. resources:配置文件等。
  1. pom.xml:project object module,maven项目的核心配置文件。
  2. target:src里的源码编译完后,存放在此。

maven的常用命令

  1. clean:清理target,即是class文件。
由于Maven是JAVA来构建的一个项目,
在maven的文件目录下有个lib,
lib里是相关的jar包,
有个插件是maven-clean-plugin,
当用clean命令的时候其实是相当于调用哪个jar包。
  1. compile:编译项目,即是生成target文件夹,class文件。背后也是调用lib里的一个jar包——maven-compile-plugin。
  2. test:单元测试,即是把test下的测试都运行一遍。
  • 先compile编译,test/java里的java文件,再运行。
  • 有要求:单元测试的类名:XxxTest.java
  1. package:以往是通过Export来导出jar file或者war file,现在可以通过package来打包。
  • 先compile再test最后package。
  • 在target目录下生成jar/war包。
  1. install:安装,本地多个项目公用一个jar包。
  • compile->test->package->install,最后在本地仓库可以找到。
  • 操作:可以把一些工具类打包,放到本地仓库,其他项目可以直接去依赖,这样的好处是如果工具类更改了代码,其他项目只需要更新一下maven项目就可以了,不需要把jar包重新导入。

maven项目的生命周期(了解)

  • 在maven中存在三套生命周期,每一套生命周期相互独立,互不影响。
    1. CleanLifeCycle:清理生命周期:clean
    2. defaultLifeCycle:默认生命周期:compile->test->package->install->deploy
    3. siteLifeCycle:站点生命周期site描述这个项目的相关信息,如依赖了哪些jar包。
  • 在一套生命周期里,执行后面的命令,前面的命令会自动执行。

maven整合web项目案例

  1. 配置eclipse中配置maven环境
  • 配置m2e插件,基本都会自带maven插件
  • 需要配置maven程序
    1. Perferences->Maven->Installations改为自己的Maven,不使用内嵌的Maven配置。
  • 配置User Settings:让eclipse知道maven仓库的位置。
    1. Perferences->Maven->User Settings改为自己Maven->conf下的settings.xml文件。
  • 构建索引:show view->maven Repository选择本地仓库右键Rebuild Index。

maven整合servlet

  1. 创建一个Maven Project,普通的Maven项目或者父工程。
  2. 创建一个简单的maven项目,create a simple project。
  3. Group Id:组,公司名称。公司域名的倒序。
  4. Artifact Id:项目名称。
  5. Version:版本信息。SNAPSHOT:快照版本、测试版本。RELEASES:正式版本。
  6. Packaging:jar则为jar包,war则为web工程,pom则为聚合工程父工程。
  7. 简单maven工程需要自己去定义一些文件,如war工程需要自己去加WEB-INF下面的web.xml文件,JDK版本也需要自己去定义,否则Update项目会退回默认的JDK版本,指定了版本也没用。
  8. 添加项目jdk编译插件:
  <build>
    <plugins>
      <!-- 设置版本为1.8 -->
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugins</artifactId>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <encoding>UTF-8</encoding>
      </configuration>
    </plugins>
  </build>
  1. 创建一个servlet,编译报错,因为缺失jar包:serlvet-api-xx.jar。
  • 查找依赖加在pom.xml文件中。
  • <dependencies>标签下各种<dependencie>标签,各个<dependencie>标签就代表一个jar包。

maven依赖范围(<scope>)

依赖范围 对于编译classpath有效 对于测试classpath有效 对于运行时classpath有效 例子
compile Y Y Y spring-core
test - Y - Junit
provided Y Y - servlet-api
runtime - Y Y JDBC驱动
system Y Y - 本地的,Maven仓库之外的类库
  • 默认是compile
  • 例如tomcat有servlet,则servlet在运行时不需要,因为tomcat里有。

运行以及调试maven项目

  1. 右键项目Run As:Maven build,Goals:tomcat:run
  2. 右键项目Debug As:Maven build,需要关联源码,否则无法跳到代码中。

maven的概念模型

[图片上传失败...(image-c4a941-1559904393636)]

  1. 上半部分是核心之一:依赖管理。
  2. 下半部分是核心之二:项目构建,通过命令来构建项目,如打包、清理等操作。

总结

  1. 安装
  2. Maven标准的目录结构
- ProjectName
- src
  - main
    - java
    - resources
    - [webapp/WEB-INF/web.xml]
  - test
    - java
    - resources
- pom.xml
  1. Maven的常用命令
- clean
- compile
- test
- package:项目的根目录target目录
- install:本地仓库
  1. 使用eclipse开发maven项目
- 区别:
  1. 不拷贝jar包
  2. 项目的目录结构不同
  1. pom.xml:项目对象模型
- 本项目的坐标信息
- 本项目jdk编译版本的信息
- 本项目需要的依赖的坐标的信息
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第1章 Maven 介绍 什么是 Maven 什么是 Maven Maven 的正确发音是[ˈmevən],而不是...
    强某某阅读 2,585评论 0 25
  • |-1-更新内容[6.从仓库解析依赖的机制(重要)] 1Maven仓库作用 仓库用来存储所有项目使用到构件,在ma...
    zlcook阅读 6,520评论 0 25
  • Maven的基本了解 什么是Maven? Maven就是Apache下的一个开源项目。它是用纯java开发的。是一...
    Bcome阅读 3,177评论 0 7
  • public static void downLoadByUrl(String urlStr,String fi...
    你可别搞黄she嗷阅读 3,806评论 0 1
  • 唐军_7a8c阅读 295评论 0 0

友情链接更多精彩内容