首先下载maven 然后win的配置环境变量

maven目录结构

--main

--java

--package

--test

--java

--package

resources

maven 需要有Java环境 ,是Java开发的

然后Java里面要写 各种包 类

pom  项目对象模型

groupId  一般用包名来表示 表示项目是由哪个开发组织开发的 类似于籍贯

artifactId 一般是项目的名称 类似于姓名

version  该元素定义jar包的版本 类似于身份证号码

往pom中引入坐标

查找条件

组织 项目 版本

web工程达成war包

编译 测试 运行 打包 安装 整个过程maven进行管理

  mvn tomcat:run

进入到项目中:

期间运行了一些插件

最终达成war包 丢到tomcat目录下

从本地找 本底没有就私服找 没有私服就去中央仓库找

最终maven工程都会使用本底jar包

注意区别maven工程 和 web工程

必须的工程目录是  web-inf  和 web.xml

maven常用的命令:

mvn compile

编译到target目录下面

mvn clean

target目录会被干掉的

mvn tetst

编译到target的test-class目录下  并且输出编译结果

mvn packages

打包 到target目录下  Java打成jar包  web打成war包

mvn install

打成jar包或者war包到本地仓库 (根据maven的配置到了本底仓库哦)

eclipse:

show view ->maven

jar  Java项目

pom做工程聚合用的 父子

war web项目

创建出war项目后:才有默认的webapp目录

需要自己创建 WEB-INF   web.xml

当然!!可以使用!! eclipse工具

右键工程 然后Java EE Tools 然后generate D.... 

web工程标准结构就生成了

右键项目 maven -- Add Plugin

输入 compile

选择版本

这就是scope: 哈哈

provided  提供 编译时候用到 打包时候用不到

tomcat提供了某个jar包 不需要我们再自己提供了  否则可能冲突  限制成 provided

runtime  运行时候用 类似于jdbc驱动

test:   只有测试时候用

system : 整个工程

坐标:  组织名  项目名  版本号

开发时候引用而不是拷贝,修改一处 其他的都不用管 引用正确的就OK了

拆分: 父工程和子工程

父工程引入了 每个子工程就不需要再去引入了  子工程就拥有了父工程的的那些了

好像类似Java的父子继承关系啊

父工程

一定是pom工程!!

子工程创建成功后,父pom会多了一个:

同时,子工程也会指向了父工程的坐标 Java中的super啊卧槽啊啊:

标准的开发  controller(web)  dao  server

首先父类:

DAO层:

Service层:

web层(Controler)

工程拆分完毕!

controller依赖service依赖dao

首先service层:

service和dao不是同一个工程,所以service使用dao,需要添加依赖:(dao层将来也会打成jar包,引入daojar包的坐标)

service层才可以用到:

web层用到service层:

引入service的jar时候,service依赖的dao也加进来了!!!!

类似于 引入某个框架的core包时候。他这个项目的pom中parent作怪,其他的都来了~~~ core这个框架是有个父工程!!!

依赖传递呀~~~

既然有依赖!parent就可以搞定呢,父类继承父类的~~ 寄托于父工程就OK了

父类中添加依赖。struts2-core  mybatis的哈哈哈哈~

查看层级依赖关系:

在生效的依赖中:

如果 mybatis3.5 依赖引入的 xjar包2.0版本 和 struts2.4 依赖的引如的 xjar包6.0版本版本不一致,冲突了呀。Exclude排除下就OK了~~~~

右击排除就OK了

pom的变化: 排除依赖

或者排除某个jar。用自己实现的

添加测试jar包时候 需要 设置scope为<scope> test </scope>哦

在dao项目添加 junit:

dao层有了junit的jar包。service是不会传递过来的。依赖传递是有范围的。

如果去除掉 scope标签 默认就是编译的范围了 scope的作用域范围:这样就有了哦

除了通过 排除来解决依赖冲突 之外,还有别的方案:

依赖的的原则 第一声明者优先  谁在前面用谁的生效~

查看依赖关系的右边: 最终能脱颖而出 选拔出来的 是pom文件中写在前面的!  第一原则:第一个声明者优先原则

第二个原则: 路径近者优先

关于版本锁定:

在父类pom中:

版本锁定

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.2.7</version>
</dependency>
</dependencies>
</dependencyManagement>

这样就锁定了版本了

在dao等其他的项目去依赖的时候:坐标就不用全了   父类中已经把版本锁定了

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
</dependencies>
</dependencyManagement>

驱动包注意 runtime 的作用范围哈

除了版本锁定,还有版本常量的使用!

   <properties>

   <spring-version>4.3.7.RELEASE</spring-version>
   <mybatis-version>4.3.7.RELEASE</mybatis-version>
 </properties>

 <dependencies>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring-version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring-version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring-version}</version>
        </dependency>
 
    </dependencies>

Maven的依赖管理:

1 依赖的出传递

2 依赖的范围

3 exclude排除jar包冲突

4 第一声明有限

5 路径近者优先

6 版本锁定

7 使用版本常量

maven知识的更多相关文章

  1. Maven知识记录(一)初识Maven私服

    Maven知识记录(一)初识Maven私服 什么是maven私服 私服即私有的仓库.maven把存放文件的地方叫做仓库,我们可以理解成我门家中的储物间.而maven把存放文件的具体位置叫做坐标.我们项 ...

  2. Maven知识总结(转)

    原文地址:http://blog.csdn.net/caihaijiang/article/details/6664910 1.Maven内置变量说明: ${basedir} 项目根目录 ${proj ...

  3. maven 知识

    1. maven 环境配置 Maven 3.3 要求 JDK 1.7 或以上   Maven 3.2 要求 JDK 1.6 或以上   Maven 3.0/3.1 要求 JDK 1.5 或以上 2. ...

  4. Maven知识整理

    一.概念: Maven是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统( ...

  5. 一:Maven知识整理

    一:maven的好处 1.依赖管理:对jar包的统一管理 可以节省空间 2.项目一键构建: 编码 编译 测试(junit) 运行 打包 部署 一个 tomcat:run就能把项目运行起来 Maven能 ...

  6. 日常开发需要掌握的Maven知识

    文章来自:https://www.jianshu.com/p/e224a6dc8f20和https://www.jianshu.com/p/20b39ab6a88c Maven出现之前 jar包默认都 ...

  7. maven知识总结

    使用maven中的命令运行web项目 以上为web项目的目录结构  必须是maven项目 启动命令行  使用 mvn tomcat:run   敲击回车 访问红框中的地址: 关闭命令行   那么项目就 ...

  8. Spring Boot 学习前你应该知道的 Maven 知识

    Maven 是什么? 回答这个问题,我们先来了解下没有Maven,我们是怎么使用开发者工具IDE去开发Java程序的.我之前开发Java程序不多,但是我还是记得,我是从网上下载或从合作方拷贝 jar ...

  9. Maven下使用Jetty进行Debug

    1.环境和条件 Maven-3.0.3Eclipse请阅读者事先具备一定maven知识 2 配置2.1 添加Jetty插件 在pom.xml中加入如下代码段 <plugin> <gr ...

随机推荐

  1. java知识链接

    Java内存模型简称jmm: 它定义了一个线程对另一个线程是可见的,另外就是共享变量的概念,因为Java内存模型又叫做共享内存模型,也就是多个线程会同时访问一个变量,这个变量又叫做共享变量, 共享变量 ...

  2. Hadoop搭建完全分布式

    ubuntu系统下: https://blog.csdn.net/u014636511/article/details/80171002 centos系统下: https://blog.csdn.ne ...

  3. JavaWeb(五):MVC案例

    MVC是Model-View-Controller的简称,即模型-视图-控制器.MVC是一种设计模式,它把应用程序分成三个核心模块:模型.视图.控制器,它们各自处理自己的任务.模型是应用程序的主体部分 ...

  4. boost Filesystem

    The library Boost.Filesystem makes it easy to work with files and directories. Paths Paths can be bu ...

  5. HDU 5667 构造矩阵快速幂

    HDU 5667 构造矩阵快速幂 题目描述 解析 我们根据递推公式 设 则可得到Q的指数关系式 求Q构造矩阵 同时有公式 其中φ为欧拉函数,且当p为质数时有 代码 #include <cstdi ...

  6. 【HDOJ6610】Game(序列带修莫队)

    题意:有n堆石子,第n堆有a[i]个,A先选择一个范围[L,R],B选择一个子区间[l,r],之后照nim游戏的规则进行 现在有询问与操作 每次询问B在给定的[L,R]内有多少种子区间的取法使得A必胜 ...

  7. 2018-2019-2 20175105王鑫浩《Java程序设计》实验三 《敏捷开发与XP实践》

    实验三 <敏捷开发与XP实践> 实验报告封面 课程:Java程序设计 班级:1751班 姓名:王鑫浩 学号:20175105 指导教师:王鑫浩 实验日期:2019年4月29日 实验时间:- ...

  8. XScreenSaver强大的锁屏工具

    source install:  https://www.jwz.org/xscreensaver/ XScreenSaver     Related articles DPMS Xresources ...

  9. POI 讀取EXCEL

    /*** 獲取單元格數值* * @param cell* @return*/private String getCellValue(Cell cell) {String cellValue = &qu ...

  10. (64)C# 预处理器指令

    预处理器命令从来不会被翻译为可执行代码中的命令,但会影响编译过程的各个方面.例如:使用预处理器指令可以禁止编译器编译代码的某一部分,如果计划发布两个版本的代码,即基本版本和有更多功能的企业版本,即可以 ...