maven知识
首先下载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知识的更多相关文章
- Maven知识记录(一)初识Maven私服
Maven知识记录(一)初识Maven私服 什么是maven私服 私服即私有的仓库.maven把存放文件的地方叫做仓库,我们可以理解成我门家中的储物间.而maven把存放文件的具体位置叫做坐标.我们项 ...
- Maven知识总结(转)
原文地址:http://blog.csdn.net/caihaijiang/article/details/6664910 1.Maven内置变量说明: ${basedir} 项目根目录 ${proj ...
- maven 知识
1. maven 环境配置 Maven 3.3 要求 JDK 1.7 或以上 Maven 3.2 要求 JDK 1.6 或以上 Maven 3.0/3.1 要求 JDK 1.5 或以上 2. ...
- Maven知识整理
一.概念: Maven是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统( ...
- 一:Maven知识整理
一:maven的好处 1.依赖管理:对jar包的统一管理 可以节省空间 2.项目一键构建: 编码 编译 测试(junit) 运行 打包 部署 一个 tomcat:run就能把项目运行起来 Maven能 ...
- 日常开发需要掌握的Maven知识
文章来自:https://www.jianshu.com/p/e224a6dc8f20和https://www.jianshu.com/p/20b39ab6a88c Maven出现之前 jar包默认都 ...
- maven知识总结
使用maven中的命令运行web项目 以上为web项目的目录结构 必须是maven项目 启动命令行 使用 mvn tomcat:run 敲击回车 访问红框中的地址: 关闭命令行 那么项目就 ...
- Spring Boot 学习前你应该知道的 Maven 知识
Maven 是什么? 回答这个问题,我们先来了解下没有Maven,我们是怎么使用开发者工具IDE去开发Java程序的.我之前开发Java程序不多,但是我还是记得,我是从网上下载或从合作方拷贝 jar ...
- Maven下使用Jetty进行Debug
1.环境和条件 Maven-3.0.3Eclipse请阅读者事先具备一定maven知识 2 配置2.1 添加Jetty插件 在pom.xml中加入如下代码段 <plugin> <gr ...
随机推荐
- CentOS7 安装KVM
检测 输入命令如果有输出表示CPU支持虚拟化 grep -E 'svm|vmx' /proc/cpuinfo 检查模块(保证有如下内容) lsmod | grep kvm 结果如下:(kvm_inte ...
- mobx学习笔记02——mobx基础语法(class)
新的语法可能不被浏览器支持,可以使用babel转换为浏览器支持的代码格式: 为什么要定义class? js是一门面向对象的编程语言.需要利用类来复用代码,提高编程效率. 需要什么样的class能力? ...
- wangeditor 粘贴word内容带样式
这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用 后台(服务端)java服务代码:(上传至ROOT/lqxcPics文件夹下) ...
- Android Studio使用tips
安装位置:C:\Users\xxx\AppData\Local\Android\sdk https://developer.android.com/topic/libraries/support-li ...
- SQLmap注入
一.安装 先安装Python2.7 下载SQLmap:http://sqlmap.org/ 下载文件解压到Python文件目录下 然后设置环境变量:D:\Python27\sqlmap 在cmd查看是 ...
- tomcat启动前端项目
前后端分离项目,前端使用vue,部署启动前端项目可以使用NodeJS,Nginx,Tomcat. *)使用Tomcat部署启动: 1.把vue项目build生成的dist包,放到Tomcat的weba ...
- js中打地鼠游戏
<!DOCTYPE html><html lang=""><head> <mata charset = "utf-8" ...
- three dots in git
What are the differences between double-dot “..” and triple-dot “…” in Git commit ranges? Using Comm ...
- opensuse 安装APACHE2+MYSQL+PHP5
sudo zypper in apache2-mod_php5 apache2 mariadb 装好后, 记得启动APACHE2对PHP的支持: a2enmod php5 默认mysql密码为空, 可 ...
- win10右键在此处打开CMD
1.在网上找了好多发现都不能运行,最后找到一个靠谱的记下来,方便以后使用. 2.新建一个 .reg格式的脚本 Windows Registry Editor Version 5.00 [HKEY_CL ...