Maven的学习

Maven的学习

一、maven基础知识

1、maven介绍

  1. maven是什么?

    maven是apache下的一个纯Java开发的开源项目管理工具,用来对Java项目进行构建、依赖管理。

  2. 什么是项目构建?

    • 项目从编写源代码到编译、测试、运行、打包、部署、运行的过程。

    项目构建的过程是什么?传统项目构建和maven项目构建的区别是什么?
    在这里插入图片描述

  3. 什么是依赖管理?

    • 什么是依赖?Java项目依赖第三方jar包才能运行,即项目依赖了第三方jar包。
    • 什么是依赖管理?对Java项目依赖的jar包进行规范化管理。
    1. 传统的项目依赖管理?

      • 方式:手动添加到项目的lib目录中。
      • 缺点:
        • 没有对jar包的版本进行同意管理,容易产生jar包冲突。
        • 从网上找jar包非常不方便。
        • jar包添加到工程中导致项目过大。
    2. maven的项目依赖管理?

      • 方式:在配置文件中添加手动添加jar包。

      • 好处:

        • 通过pox.xml文件对jar包版本进行统一管理,避免进行jar包冲突。

        • maven团队维护了一个非常全的maven仓库。

  4. maven的好处?

    1. 一步构建

      • maven对项目构建的过程进行标准化,通过一个命令可完成构建过程。
    2. 依赖管理

      • maven不用手动导jar包,通过在配置文件中定义坐标从maven仓库自动下载,方便且不容易出错。
    3. maven的跨平台,可以在windows、Linux上使用。

    4. maven遵循规范开发利于提高大型项目的团队开发效率,降低项目的维护成本。

2、maven的安装

  1. 下载安装

    • 下载:从http://maven.apache.org/download.cgi下载你想要的版本。

    • 解压:解压到不含中文和空格的目录下:

      • bin目录:mvn.bat(以run方式运行项目)、mvnDebug.bat(以debug方式运行项目)

      • boot目录:maven运行需要的类加载器。

      • conf目录:settings.xml整个maven工具的核心配置文件

      • lib目录:maven运行的jar包。

  2. 环境变量配置

    • 配置MAVEN_HOME

    • 将%MAVEN_HOME%/bin加到环境变量path.

    • 通过mvn -v查看是否安装成功。

    • *注意:%JAVA_HOME%\bin;*一定要放在path的最前面,否则,eclipse等开发工具可能会出错。

  3. maven仓库

    1. maven仓库的作用?

      • 本地仓库:用来存储从远程仓库和中央仓库下载的jar包和插件,项目要使用的jar包或者插件优先从本地仓库查找。默认的本地仓库位置是在用户目录下,最好配置一下,放在自己想要的目录中。

      • 远程仓库:如果本地仓库没有,默认去远程仓库中下载,远程仓库可以在互联网内也可以在局域网内。

      • 中央仓库:maven软件中内置了一个远程仓库https://repo.maven.apache.org/maven2/,他是中央仓库,服务于整个互联网。

        • 如何在中央仓库中找jar包?

          搜索org ——>进入到 org/ 下 ——>搜索apache ——>进入到apache/ 目录下——>搜索struts——>进入struts2-core目录下——>选择版本

    2. 配置本地仓库?

      在conf目录中找到settings.xml文件中找到配置位置加入下面一句话:

      <localRepository>D:\maven\repository </localRepository>
      

3、maven常用命令?

1、clean
  • 项目工程目录> mvn clean
  • 清除项目根目录下的target目录,将class文件全部清除
2、Compile
  • 项目工程目录> mvn compile
  • 编译源文件到到项目根目录,创建target目录,里面存放的是class文件。
3、test
  • 写一个测试用例
  • 项目根目录 > mvn test
  • 运行的插件有:
    • 复制资源的插件。
    • 编译打包class文件的插件,编译的是源文件,放在target/classes目录下。
    • 复制test目录下的resources的插件。
    • 编译打包class文件的插件,编译的是测试文件,放在target/test-classes目录下。
    • 执行测试单元的测试类,然后显示测试单元的类的结果。
4、package
  • 项目根目录 > mvn package
  • 运行的插件
    • 前五步于test相同
    • 打包wa文件的插件,放在target/ *.war。
5、install
  • 项目根目录 > mvn install
  • 运行的插件
    • 前六步与package相同
    • 执行将项目的war包转移到本地仓库的插件。在repository/目录下。

3、三套生命周期

​ maven对项目的构建分为三套 独立的生命周期,注意这里说的是“三套”,而且是“相互独立”,这三套生命周期分别是:

  • clean lifecycle : 在进行真正的构建之前进行一些清理工作。
  • default lifecycle : 构建的核心部分:编译、测试、打包、部署等等。
  • site lifecycle : 生成项目报告,站点、发布站点。

每一个阶段都有一个相应的命令,具有相应的插件来支持命令的运行。

注意:属于同一个指令周期内的指令,当后面的指令执行时,前面的会自动执行。

二、maven创建项目工程

1、创建简单的helloworld项目工程注意的点

  1. 创建简单的maven工程,选择Maven porject——>跳过骨架的选择

  2. packaging选项:web项目选择war,基础Java选择jar,工程聚合时选择pom(下面会讲到)

  3. 创建好后,发现项目不是标准的web结构,两个方法构建:

    • 传统方法:在其他web项目中找到结构复制过来
    • 绝招:右键项目 ——> JavaEE Tools ——>选择第二个,专门用来生成web项目的标准结构
  4. jdk版本的控制,maven默认是jdk1.5

    • 绝招:右键项目——>maven——>Add Plugin——>输入compile——>选择最高版本就行了

    • 然后在pom.xml文件中,在plugin标签中加入下面的标签:

      <configuration>
      	<!--源码版本-->
          <source>1.7</source>
      	<!--编译目标版本-->
          <target>1.7</target>
          <!--指定编码-->
          <encodeing>ut-8</encodeing>
      </configuration>
      
    • 改完以后可能会报错,就右键项目——>maven——>update porject,就是刷新工程,可以没事刷一下

    • 还有绝招:调整全局jdk版本,在maven的setting.xml文件下配置jdk版本

  5. 创建servlet文件时,发现报错,是因为没有jar包,下面讲解如何添加依赖:

    • 打开pom.xml文件——>点击dependencies——> Add ——>搜索servlet——>选择你想要的servlet版本
  6. jsp文件创建时不报错,但是maven原本没有jsp jar包的,不报错是eclipse的问题,所以也要添加依赖。

  7. 如果你想使用命令行运行,就要添加tomcat插件,方法和jdk版本控制第一种方法一样。然后再pom.xml文件中配置如下:

    <configuration>
    	<!--访问端口-->
        <port>8080</port>
    	<!--项目访问的路径-->
        <path>/helloworld</path>
        <!--指定编码-->
        <uriencodeing>ut-8</uriencodeing>
    </configuration>
    
    • tomcat插件运行步骤:
      1. run as ——>maven build(第四个是运行运行过的命令,第五个是自己输命令)——>Goals——>输入tomcat7:run(这是直接运行,编译就直接输入compile,可以不加mvn)
      2. 运行之后tomcat成功启动,但是在网页无法访问,原因是jar包冲突,因为tomcat中本来就有servlet、jsp的jar包,这也是为什么创建web项目可以不用导入jar包的原因,maven管理依赖时又加了jar包,就导致冲突。
        • 解决办法:打开pom.xml文件——>点击dependencies——>properties ——> Scope ——> 选择provided
        • compile:默认的,编译
        • provided:提供者,就是已经有了,作用范围:编译时用,打包就不用了
        • runtime:运行的时候用,有点类似与JDBC的驱动,运行时需要,写代码和编译时不需要
        • test:测试和编译时要,运行时就不要了,添加junit 的jar包就选这个
        • system:配置时要指定整个项目,太耗时,不建议使用,和provided差不多

2、使用maven导入struts2-core jar包

  1. 一键导入:打开pom.xml文件——>点击dependencies——>add——>搜索struts2-core——>选择你需要的版本

  2. 在resources文件下创建struts.xml文件——>next——>选择DTD文件——>选择XML文件——>选择DTD的文件

  3. 上述步骤可能不会成功,没有DTD文件,所以就下载ssh-schemas_…jar包插件,放在eclipse安装目录下的plugin目录下,再次测试就成功创建了。

  4. 配置package标签:

    <package name="default" namespace="/" extends="struts-default">
    	<action name="helloAction" class="全类名">
        	<result>/index.jsp</result>
        </action>
    </package>
    
  5. 在web.xml文件中配置过滤器filter

    <filter>
        <filter-name>struts</filter-name>
        <filter-class>检索ctrl+shift+T,搜索StrutsPreparAndExecuteFilter类名,复制群路径</filter-class>
    </filter>
    <filter-mapping>
    	<filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
  6. 补充:在pom.xml文件中配置的tomcat插件是怎么工作的?

    • 这里的tomcat插件是是一个虚拟的tomcat,他不会将项目部署到tomcat中,这个插件是用来模拟tomcat的运行环境,并不是正真的tomcat。

三、maven工程的拆分于聚合(重点)

1、工程的拆分

1、为什么要拆分?

  • 工程两巨大时,工程的拆分可以实现分模块开发与测试,可实现多线程开发与管理,提高代码的费用度的同时也提高开发效率。可以用一张图解释一下:
    在这里插入图片描述

2、工程的聚合

1、父工程管理各个子工程就是就是工程的聚合。

2、依赖的传递性

​ 依赖具有传递性,这就是为什么引入struts2-core核心jar包以后,其他所有的jar包就会自动引进来的原因。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值