2019-5-1 maven学习笔记
一.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学习笔记的更多相关文章
- Maven学习笔记-03-Eclipse下maven项目在Tomcat7和Jetty6中部署调试
现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...
- Maven学习笔记-04-Eclipse下maven项目在Tomcat7和Jetty6中部署调试
现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...
- Maven学习笔记—仓库
Maven仓库 1 什么是Maven仓库 在Maven中,任何一个依赖.插件或者项目构建的输出,都可以成为构件,而Maven通常在某个位置统一的存储所有Maven项目共享的构件,这个统一的位置就是Ma ...
- MAVEN学习笔记之Maven插件的应用(4)
MAVEN学习笔记之Maven插件的应用(4) <build> <pluginManagement> <plugins> <plugin> <gr ...
- MAVEN学习笔记之Maven生命周期和插件简介(3)
MAVEN学习笔记之Maven生命周期和插件简介(3) clean compile site三套生命周期相互独立. clean pre-clean 执行清理前的工作 clean 清理上一次构建生成的所 ...
- MAVEN学习笔记之私服Nexus(2)
MAVEN学习笔记之私服Nexus(2) 私有服务器搭建 Nexus www.snatype.org下载 snatype-work 是默认nexus存储nexus a:将bin添加到环境中 Admin ...
- MAVEN学习笔记之基础(1)
MAVEN学习笔记之基础(1) 0.0 maven文件结构 pom.xml src main java package resource test java package resource targ ...
- Maven 学习笔记(二)
前面一文——Maven 学习笔记(一)中已经提到了 pom 的大部分配置,Maven 本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给创建来完成,每一个任务都会对应一个插件 ...
- TODO maven学习笔记
maven是什么? 我的体会 我理解得maven就是一个构建工具,可以做一些项目得整合操作,我们把一些常见得操作,封装在maven里面,并给它命名成 clean,test,compile,这些步骤都是 ...
- Maven学习笔记(1)之安装Maven
此笔记是学习Maven时自己摸索+各种百度而来,并非全部原创,望与各位一同学习,勿拍~勿拍~ 安装步骤 1.下载Maven的最新版本,地址:http://maven.apache.org/downlo ...
随机推荐
- Eclipse与github整合完整版
最近朋友都推荐使用github管理自己的项目,而且免费用户可以有5个仓库,恰好我也想了解下git,借此机会学习一下. github官方指南使用独立第三方git工具来进行版本控制,并不借助于eclips ...
- GET与POST方法
HTTP中的GET,POST,PUT,DELETE对应着对这个资源的查,改,增,删4个操作.GET一般用于获取/查询资源信息,而POST一般用于更新资源信息. 1.根据HTTP规范,GET用于信息获取 ...
- sqlplus 连接数据库执行SP
.bashrc export HOME= export LANG="C" .bash_profile #明码 #export LOG_USER=lhcx #export LOG_P ...
- java 类中 static 的使用
在类中 static 主要修饰变量,方法及代码块.大致的执行和使用,据个人理解如下: 1.修饰变量: 在修饰变量时,如 ,表示该变量是静态变量,也可称为类变量.当当前变量是静态变量时,该变量被该类的所 ...
- Codeforces 1097F Alex and a TV Show (莫比乌斯反演)
题意:有n个可重集合,有四种操作: 1:把一个集合设置为单个元素v. 2:两个集合求并集. 3:两个集合中的元素两两求gcd,然后这些gcd形成一个集合. 4:问某个可重复集合的元素v的个数取模2之后 ...
- MyBatis配置Setting详细说明
该表格转载自http://blog.csdn.net/summer_yuxia/article/details/53169227 setting是指定MyBatis的一些全局配置属性,这是MyBati ...
- Struts 第一天
请简述下Struts2 的执行流程. 首先是,启动tomcat服务器,这时候会加载web.xml,当读到filter标签时,会创建过滤器对象.struts2的核心过滤器(StrutsPrepareAn ...
- 图--生成树和最小生成树.RP
树(自由树).无序树和有根树 自由树就是一个无回路的连通图(没有确定根)(在自由树中选定一顶点做根,则成为一棵通常的树). 从根开始,为每个顶点(在树中通常称作结点)的孩子规定从左到右的次 ...
- Umbraco中获取UmbracoContext
在Umbraco项目中,获取当前的UmbracoContext几乎是都需要用到的,我们一般通过一个静态方法来获取,代码如下 public class ContextHelpers { public s ...
- wrodcount
PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning 计划 20 20 · Estimate · 估计这个任务需要多少时间 20 20 Development 开 ...