一.maven的好处

同样的项目使用maven工程来实现,由于不需要导入很多jar包,源码很小

原理:根据坐标到项目的仓库里查找需要的依赖

二.安装步骤

1.到http://maven.apache.org中下载maven的项目

2.解压后将bin目录配置到系统的path中

3.配置本地的responsitory仓库

conf文件中<settings></settings>中加入

<localRepository>E:\Java\repository</localRepository>
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>

三.maven项目的目录结构

src

  main

    java  //项目的源码

    resources //配置文件

    webapp  //前端界面

  test

    java  //测试的源码

    resources  //测试用配置文件

四.常用的maven命令

1.compile   maven工程的编译命令,作用是将src下的Java文件编译到target目录下

2.test       maven工程的测试命令,会执行src/test/java下的测试单元

3.       maven工程的清理命令,执行后会删除target下的编译文件

4.package    maven工程的打包命令,对于java工程会打包成jar文件,将web工程打包成war

5.install     maven工程的安装命令,将maven打包成的jar或者war发布到本地仓库

五.添加jar包坐标的作用范围

compile :编译范围,指A在编译时候依赖B,此范围为默认编译范围。

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

provided :provided的依赖只有在当JDK或者一个容器已经提供该依赖的时候后才使用,

     provided依赖只有在编译和测试时候需要,在运行时候不需要,比如说servlet api已经被tomcat服务器所提供

     (这个一定要加!!!)

runtime   : runtime依赖在运行和测试系统的时候需要,但是在编译的时候不需要

     比如: jdbc的驱动包,由于运行时需要,所以runtime范围的依赖会被打包

test   :test范围依赖 在编译和运行时候都不需要,只有在测试编译和测试运行的时候会用到

     比如:junit 由于运行时不需要,所以test范围的依赖不会被被打包

system :system的依赖与provided类似,但是你必须显示的提供一个对于本地系统中的JAR文件路径,需要指定systemPATH的磁盘路径,不推荐使用

六.Maven工程的拆分与聚合

  1.创建maven工程,不点击创建web_app的模板

   2.创建工程后,删除工程中的src

   3.在工程中new 新的model

七.依赖关系

   创建的父module的pom.xml中会有

    <modules>

      <module>ssh_dao</module>

    </modules>

  的声明

  创建的子module的pom中会有

    <parent>

      <groupId>com.wzq.crm</groupId>

      <artifactId>ssh_parent</artifactId>

      <version>0.0.1-SNAPSHOT</version>

    </parent>

    <artifactId>ssh_dao</artifactId>

八.依赖冲突解决

1.方式一:

  在冲突的某一个jar包文件下右键excluded

  在父工程的pom文件中会产生一个

    <exclutions>

      <exclution>

        <artifactId>javassist</artifactId>

        <groupId>javassist<groupId>

      </exclution>

    </exclutions>

2.方式二:

  依赖调节原则

    如:org.apache.struts依赖spring-beans-3.0.5

       而 spring-context依赖spring-beans-4.2.4

  1.第一声明优先原则

    在pom文件中定义的依赖,以先声明的的依赖为准则

  2.路径近者优先优先原则

    如:A依赖beans-4.2.4,A依赖B ,B依赖beans-3.0.5

      因为beans-4.2.4相对于beans-3.0.5被A依赖的路径最近,4.2.4将被导入到系统

  3.锁定版本    

    在父module的pom文件中声明

 <!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version></version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts2.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

注意:可以通过这种方式来进行版本的快速注入:

 <properties>
<spring.version>4.2.4.RELEASE</spring.version>
<struts2.version>2.3.24</struts2.version>
<hibernate.version>5.0.7.Final</hibernate.version>
</properties>

2019-5-1 maven学习笔记的更多相关文章

  1. Maven学习笔记-03-Eclipse下maven项目在Tomcat7和Jetty6中部署调试

    现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...

  2. Maven学习笔记-04-Eclipse下maven项目在Tomcat7和Jetty6中部署调试

    现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...

  3. Maven学习笔记—仓库

    Maven仓库 1 什么是Maven仓库 在Maven中,任何一个依赖.插件或者项目构建的输出,都可以成为构件,而Maven通常在某个位置统一的存储所有Maven项目共享的构件,这个统一的位置就是Ma ...

  4. MAVEN学习笔记之Maven插件的应用(4)

    MAVEN学习笔记之Maven插件的应用(4) <build> <pluginManagement> <plugins> <plugin> <gr ...

  5. MAVEN学习笔记之Maven生命周期和插件简介(3)

    MAVEN学习笔记之Maven生命周期和插件简介(3) clean compile site三套生命周期相互独立. clean pre-clean 执行清理前的工作 clean 清理上一次构建生成的所 ...

  6. MAVEN学习笔记之私服Nexus(2)

    MAVEN学习笔记之私服Nexus(2) 私有服务器搭建 Nexus www.snatype.org下载 snatype-work 是默认nexus存储nexus a:将bin添加到环境中 Admin ...

  7. MAVEN学习笔记之基础(1)

    MAVEN学习笔记之基础(1) 0.0 maven文件结构 pom.xml src main java package resource test java package resource targ ...

  8. Maven 学习笔记(二)

    前面一文——Maven 学习笔记(一)中已经提到了 pom 的大部分配置,Maven 本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给创建来完成,每一个任务都会对应一个插件 ...

  9. TODO maven学习笔记

    maven是什么? 我的体会 我理解得maven就是一个构建工具,可以做一些项目得整合操作,我们把一些常见得操作,封装在maven里面,并给它命名成 clean,test,compile,这些步骤都是 ...

  10. Maven学习笔记(1)之安装Maven

    此笔记是学习Maven时自己摸索+各种百度而来,并非全部原创,望与各位一同学习,勿拍~勿拍~ 安装步骤 1.下载Maven的最新版本,地址:http://maven.apache.org/downlo ...

随机推荐

  1. 2016.4.6 WinForm显示PDF两种方法

    1.最直接的方法,添加webbrowser控件 webb.Url = new Uri(path);可显示pdf控件. 如果需要在打开时跳转到某页,可用在路径后直接加#page=,例如webb.Url ...

  2. 第八章 Java中的并发工具类

    等待多线程完成的CountDownLatch countDownLatch允许一个或多个线程等待其他线程完成操作. public class CountDownLatchTest { static C ...

  3. Delphi 转圈 原型进度条 AniIndicator 及线程配合使用

    Delphi FMX 转圈 原型进度条 progress AniIndicator TAniIndicator TFloatAnimation VCL下也有转圈菊花进度条 TActivityIndic ...

  4. 【270】IDL处理GeoTIFF数据

    参考:将原GeoTIFF数据的投影坐标信息赋值到新创建的文件上 pro tiff_projection ;启动ENVI e = ENVI(/HEADLESS) ;打开文件 file = 'D:\01- ...

  5. java之静态函数和静态变量

    静态变量: 静态变量好似一种成员变量,它的特点是前面有static. 普通变量会有多份,它在每个对象当中都存在,但是静态变量只有一份,它是属于类的. 静态变量的调用方法: 1.类名.变量名 Custo ...

  6. springmvc urlpattern配置详解

    静态资源无法访问问题的解决方案: 1.使用Tomcat默认的Servlet解决:在web.xml中加以下代码

  7. 返回键的复写onBackPressed()介绍

    本篇文章是对Android中返回键的复写onBackPressed()进行了详细的分析介绍,需要的朋友参考下 在android开发中,当不满足触发条件就按返回键的时候,就要对此进行检测.尤其是当前Ac ...

  8. PAT-l3-002堆栈

    L3-002. 堆栈 大家都知道“堆栈”是一种“先进后出”的线性结构,基本操作有“入栈”(将新元素插入栈顶)和“出栈”(将栈顶元素的值返回并从堆栈中将其删除).现请你实现一种特殊的堆栈,它多了一种操作 ...

  9. C++面向对象类的实例题目七

    题目描述: 编写两个有意义的类,使一个类嵌套在另一个类中. 分析: 本题涉及两个类student和cdegree,前者为学生类,包含学生的学号(nubner),姓名(name)和成绩(degree), ...

  10. SingletonPattern(23种设计模式之一)

    设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计模式六大 ...