首先下载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. Linux命令"ls"进阶说明

    pwd:the current working directory cd -: return to the previous working directory Filenames that begi ...

  2. a标签指定的url,在表单提交前进行js验证的实现

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. S1.2 Python开发规范指南

    参考链接 Python风格规范 分号 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 行长度 每行不超过80个字符 例外: 长的导入模块语句 注释里的URL 不要使用反斜杠连接行. Pytho ...

  4. jsp的课设1

    记这个为了巩固整个网站的开发流程,java开发太昂贵基本上很少有公司用,不知道学校怎么想的用这个.基本流程适用于任何后台的开发. JDK的安装不提了,Tomcat和Mysql都是用的最新版的,由于是w ...

  5. 2018-2019-2 网络对抗技术 20165206 Exp7 网络欺诈防范

    - 2018-2019-2 网络对抗技术 20165206 Exp7 网络欺诈防范 - 实验任务 (1)简单应用SET工具建立冒名网站 (1分) (2)ettercap DNS spoof (1分) ...

  6. 【原】webpack--文件监听的原理

    轮询判断文件的最后编辑时间是否发生变化,一开始有个文件的修改时间,先存储起来这个修改时间,下次再有修改就会和上次修改时间比对,发现不一致的时候不会立即告诉监听者,而是把文件修改缓存起来,等待一段时间, ...

  7. Qt文件夹遍历

    void FindFile(const QString &_filepath) { QDir dir(_filepath); for each (QFileInfo mfile in dir. ...

  8. Hive date_add 和 date_diff 函数

    date_add 函数 例子:date_add('day',-1,current_date) date_diff 函数 例子:date_diff('day',cast(a.dt1 as timesta ...

  9. 浅谈 STM32 硬件I2C的使用 (中断方式 无DMA 无最高优先级)(转)

    引子 STM32的硬件I2C很多人都对它望而却步.因为很多电工都说,STM32 硬件 I2C有BUG.不稳定.死机等等……最后都使用GPIO模拟I2C. 的确,模拟I2C好用.但是在我看来在一个72M ...

  10. gradle spring 配置解释

    plugins { id 'java' id 'eclipse' id 'idea' # 统一springboot版本号 id 'org.springframework.boot' version ' ...